Xin*_*Xin 2 sql postgresql types
我想弄清楚Postgres在比较varchar
时的作用char
.
这是我的一个测试:
test=# select 'a'::character varying = 'a '::character;
?column?
----------
t
test=# select 'ab'::character varying = 'ab '::character;
?column?
----------
f
Run Code Online (Sandbox Code Playgroud)
对我来说这看起来像个错误.有谁知道这里发生了什么?这个主题有好的文件吗?
根本不是一个bug.
将字符串文字转换'ab '
为character
,这是你得到的:
a
Run Code Online (Sandbox Code Playgroud)
character
没有长度说明符相当于character(1)
.
'a'::character(1)
然后将强制为varchar
(character varying
)来测试平等'a'::varchar
或'ab'::varchar
和产量TRUE
或FALSE
分别.
基本上,几乎没有什么好的理由使用character
在所有.它是一种遗留类型,已经失去了它的实用性.只需使用text
或varchar
.