非常简短的问题。任何人都可以说为什么这个查询
select LENGTH(' '::char || ' '::char), LENGTH(' '::text || ' '::char), LENGTH(' ' || ' '), LENGTH('a'::char || 'b'::char);
返回
0 1 2 2
空格特殊字符是否与其他字符串不连接?
文档只说明了这一点:
Unless otherwise noted, all of the functions listed below work
on all of these types, but be wary of potential effects of
automatic space-padding when using the character type.
为什么我这样做?因为我在存储过程中用char构建字符串char,当我尝试用char连接varchar时没有任何事情发生。
答案 0 :(得分:2)
CHAR type是“固定长度,空白填充”。这意味着,如果将"foobar"
存储到char(10)
字段中,Postgres实际存储"foobar "
(即四个尾随空格,SO不保留相邻的空格)。当您获取值时,将删除任何尾随空格。 ' '::char
也会发生同样的情况 - 它的尾随空格被剥离,只留下一个零长度的字符串。