(Oracle PostgreSQL변환)문자열 과 null값 연결의 차이점 이해하기

Oracle DB

오라클 SQL문에서의 문자열 연결 문법과 PostgreSQL의 SQL문에서의 문자열 연결 문법은 실행 결과가 동일하지 않습니다. 이 글을 통해 오라클과 PostgreSQL에서의 차이점을 이해하고 오라클에서 PostgreSQL으로 시스템을 이동하는 경우 도움이 되기를 바랍니다.

차이점

OraclePostgreSQL
SELECT ‘abc’ || null from dual;
———————-
abc
SELECT ‘abc’ || null;
———————-
null

Oracle에서는 문자열 ‘abc’와 null을 문자열 연산자 기호 || 를 사용하여 연결하면 문자열 ‘abc’를 결과로 취득합니다.

그러나, PostgreSQL에서는 문자열 연산자 기호 || 를 사용하여 문자열을 null과 연결하면 결과는 null이 됩니다.

대응 방법

OraclePostgreSQL
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의 매핑표는 다음과 같습니다.

ABA || BA || B is not null
‘abc’‘123’‘abc123’TRUE
‘abc’NULL‘abc’TRUE
NULL‘123’‘123TRUE
NULLNULLNULLFALSE

PostgresQL의 WHERE조건 A is not null OR B is not null 의 매핑표는 다음과 같습니다.

ABA is not nullB is not nullA is not null
OR
B is not null
‘abc’‘123’TRUETRUETRUE
‘abc’NULLTRUEFALSETRUE
NULL‘123’FALSETRUETRUE
NULLNULLFALSEFALSEFALSE
제목과 URL을 복사했습니다