|
5.5. 查询目标要插入表中的数值也根据下面的步骤转换成目标列的数据类型. 查询目标数据类型解析
Example 5-6. character 存储类型转换 对一个目标列定义为 character(20) 的查询, 下面查询确保目标的正确定长: tgl=> CREATE TABLE vv (v character(20)); CREATE tgl=> INSERT INTO vv SELECT 'abc' || 'def'; INSERT 392905 1 tgl=> SELECT v, length(v) FROM vv; v | length ----------------------+-------- abcdef | 20 (1 row) 这里真正发生的事情是两个 unknown 文本解析缺省成 text , 这样就允许 || 操作符解析成 text 连接. 然后操作符的 text 结果转换成 bpchar ( "空白填充的字符型" ,该字符类型内部名称)以匹配目标字段类型. (不过,因为分析器知道 text 和 bpchar 是二进制兼容的, 这样的转换是隐含的并且实际上不做任何函数调用.) 最后,在系统表里找到测长函数 bpchar(bpchar,integer) 并且应用于该操作符的结果并存储字段长. 这个类型相关的函数执行所需要的长度检查和额外的空白填充. |