2016-09-21 1 views
0

이유는 무엇입니까 (7.2) 네티의네티 문자열 비교 (공백과 공백)없이

select 'xyz' = 'xyz ' 

반환 사실? 공백이있는 문자열을 공백없이 문자열과 다른 것으로 간주하는 비교 논리를 작성하려고하지만이 동작으로 인해 작동하지 않습니다.

답변

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)