2013-08-01 2 views
0

상위 문에서 래핑 된 varchar 열에 두 테이블을 조인 할 때 두 varchar 값 모두에 후행 공백이 있으면 조인이 작동하지 않습니다. 아래의 두 가지 예에서Postgres 9.2.4에 대한 JOIN ON UPPER 사용

, VALUE1 및 VALUE2이 = 'ABC'가

-

SELECT * FROM TABLE1 INNER JOIN TABLE2 
ON UPPER(VALUE1) = UPPER(VALUE2) 

작동하지 않습니다 -

SELECT * FROM TABLE1 INNER JOIN TABLE2 
ON UPPER(TRIM(VALUE1)) = UPPER(TRIM(VALUE2)) 

작동하면이에 다른 사람 실행을 가지고 문제?

답변

0

보자 :

CREATE TABLE table1(value1 varchar(10)); 
CREATE TABLE table2(value2 varchar(10)); 
INSERT INTO table1 values('ABC '); 
INSERT INTO table2 values('ABC '); 

SELECT * FROM TABLE1 INNER JOIN TABLE2 
ON UPPER(VALUE1) = UPPER(VALUE2) 

결과 : 그것은 나타납니다

 
value1 | value2 
--------+-------- 
ABC | ABC 

을 작업.

공백과 관련하여 의미가 다르므로 VARCHAR(N) 대신 CHAR(N) 유형을 사용하지 마십시오.