0
select 'xyz' = 'xyz '
返回TRUE在Netezza公司(7.2)?我试图建立一个比较逻辑,认为一个字符串与空格是不同的字符串没有空格,但它不工作,因为这种行为。
select 'xyz' = 'xyz '
返回TRUE在Netezza公司(7.2)?我试图建立一个比较逻辑,认为一个字符串与空格是不同的字符串没有空格,但它不工作,因为这种行为。
此行为是根据ANSI SQL-92谓词比较规则。在比较之前,弦必须用空格填充到相同的长度。
如果您想避免这种行为,您可以使用“LIKE”而不是“=”,或者在“=”比较中添加一个长度()检查。
select 'match' where 'xyz' = 'xyz ';
?COLUMN?
----------
match
(1 row)
select 'match' where 'xyz' like 'xyz ';
?COLUMN?
----------
(0 rows)
select 'match' where 'xyz' = 'xyz ' and (length('xyz') = length('xyz '));
?COLUMN?
----------
(0 rows)