我想知道为什么两个varchar的连接在结果中给出了我的文本类型。
select 'Plural'::varchar || 'sight'::varchar;
在PGAdmin3(服务器:9.4)的输出中输入串联的“文本”。
答案 0 :(得分:8)
test=> \doS ||
List of operators
┌────────────┬──────┬───────────────┬────────────────┬─────────────┬─────────────────────────────────────┐
│ Schema │ Name │ Left arg type │ Right arg type │ Result type │ Description │
├────────────┼──────┼───────────────┼────────────────┼─────────────┼─────────────────────────────────────┤
│ pg_catalog │ || │ anyarray │ anyarray │ anyarray │ concatenate │
│ pg_catalog │ || │ anyarray │ anyelement │ anyarray │ append element onto end of array │
│ pg_catalog │ || │ anyelement │ anyarray │ anyarray │ prepend element onto front of array │
│ pg_catalog │ || │ anynonarray │ text │ text │ concatenate │
│ pg_catalog │ || │ bit varying │ bit varying │ bit varying │ concatenate │
│ pg_catalog │ || │ bytea │ bytea │ bytea │ concatenate │
│ pg_catalog │ || │ jsonb │ jsonb │ jsonb │ concatenate │
│ pg_catalog │ || │ text │ anynonarray │ text │ concatenate │
│ pg_catalog │ || │ text │ text │ text │ concatenate │
│ pg_catalog │ || │ tsquery │ tsquery │ tsquery │ OR-concatenate │
│ pg_catalog │ || │ tsvector │ tsvector │ tsvector │ concatenate │
└────────────┴──────┴───────────────┴────────────────┴─────────────┴─────────────────────────────────────┘
(11 rows)
||
没有varchar
运算符。会发生什么是PostgreSQL将varchar
转换为text
(这是此类型类别中的首选类型)。
此操作的结果也将是text
。
答案 1 :(得分:2)
Table 9-8. SQL String Functions and Operators
string || string
- 返回类型文字
同时阅读类型Type conversion,例如字符串连接运算符类型解析。
而且我的文本是postgres的默认字符串类型,所以当你混合数据类型时,它们将默认为string的文本。
答案 2 :(得分:0)