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)
为什么
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)