为什么
select 'xyz' = 'xyz '
在Netezza(7.2)中返回True?我正在尝试构建一个比较逻辑,它将带有空格的字符串视为与没有空格的字符串不同但由于此行为它不起作用。
答案 0 :(得分:1)
此行为符合ANSI SQL-92谓词比较规则。在比较之前,字符串必须用空格填充到相同的长度。
如果要避免此行为,可以使用“LIKE”而不是“=”,或者在“=”比较中添加length()检查。
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)