Netezza 字符串比较(空格和不带空格)

Netezza string comparison (spaces and without spaces)

为什么

select 'xyz' = 'xyz  '

return 在 Netezza (7.2) 中正确吗?我正在尝试构建一个比较逻辑,将带空格的字符串视为不同于不带空格的字符串,但由于这种行为它不起作用。

此行为符合 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)