2

我试图弄清楚 Postgres 在varcharchar.

这是我的一项测试:

test=# select 'a'::character varying = 'a     '::character;
?column?
----------
 t

test=# select 'ab'::character varying = 'ab     '::character;
?column?
----------
 f

这对我来说似乎是一个错误。有谁知道这里发生了什么?有没有关于这个主题的好文档?

4

1 回答 1

5

根本不是错误。
将字符串文字'ab '转换为character,这就是你得到的:

a

根据文档:

character没有长度说明符等同于character(1).

'a'::character(1)然后将被强制到varchar( ) 以分别测试与or和 yield orcharacter varying的相等性。'a'::varchar'ab'::varcharTRUEFALSE

基本上,几乎没有任何充分的理由使用character . 这是一种已经过时的遗留类型。只需使用textor varchar

于 2013-06-27T01:46:41.083 回答