오라클 SQL문에서의 문자열 연결 문법과 PostgreSQL의 SQL문에서의 문자열 연결 문법은 실행 결과가 동일하지 않습니다. 이 글을 통해 오라클과 PostgreSQL에서의 차이점을 이해하고 오라클에서 PostgreSQL으로 시스템을 이동하는 경우 도움이 되기를 바랍니다.
차이점
Oracle | PostgreSQL |
---|---|
SELECT ‘abc’ || null from dual; ———————- abc | SELECT ‘abc’ || null; ———————- null |
Oracle에서는 문자열 ‘abc’와 null을 문자열 연산자 기호 || 를 사용하여 연결하면 문자열 ‘abc’를 결과로 취득합니다.
그러나, PostgreSQL에서는 문자열 연산자 기호 || 를 사용하여 문자열을 null과 연결하면 결과는 null이 됩니다.
대응 방법
Oracle | PostgreSQL |
---|---|
SELECT * FROM TBL001 WHERE A || B is not null | SELECT * FROM TBL001 WHERE A is not null OR B is not null |
Oracle과 PostgreSQL에서 문자열 연결 연산자 기호 || 사용의 차이점을 극복하기 위해서는 PostgreSQL에서 OR문을 사용합니다. 사용 결과를 비교한 표는 다음과 같습니다.
Oracle의 WHERE 조건 A || B is not null의 매핑표는 다음과 같습니다.
A | B | A || B | A || B is not null |
---|---|---|---|
‘abc’ | ‘123’ | ‘abc123’ | TRUE |
‘abc’ | NULL | ‘abc’ | TRUE |
NULL | ‘123’ | ‘123 | TRUE |
NULL | NULL | NULL | FALSE |
PostgresQL의 WHERE조건 A is not null OR B is not null 의 매핑표는 다음과 같습니다.
A | B | A is not null | B is not null | A is not null OR B is not null |
---|---|---|---|---|
‘abc’ | ‘123’ | TRUE | TRUE | TRUE |
‘abc’ | NULL | TRUE | FALSE | TRUE |
NULL | ‘123’ | FALSE | TRUE | TRUE |
NULL | NULL | FALSE | FALSE | FALSE |