1

很短的问题。谁能说出为什么这个查询

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.

为什么我这样做?因为我在存储过程中逐个字符地构建字符串,当我尝试将 varchar 与 char 连接时,什么也没有发生。

4

1 回答 1

2

CHAR 类型是“固定长度,空白填充”。这意味着如果您存储"foobar"到一个char(10)字段中,Postgres 实际存储"foobar "(即四个尾随空格,因此不会保留相邻的空格)。当您取回您的值时,任何尾随空格都会被删除。同样的情况也发生了' '::char——它的尾随空格被剥离,只留下一个零长度的字符串。

于 2012-05-29T13:32:02.793 回答