NVL3 [SQL] COALESCE() 함수 NULL 변환 COALESCE 함수사용하여 NULL값 변환하기 COALESCE()를 사용하여 N개 컬럼의 NULL체크를 하여 변환할 수 있다. 얼핏 보면 NVL()과 동일해 보이지만, NVL()은 인자가 2개만 가능하고 COALESCE()는 인자가 N개까지 가능하다 ! 예제를 보면 이해가 빠를 것이다.SELECT COALESCE(컬럼1, 컬럼2, … ,컬럼N) FROM TEST_TABLE컬럼1부터 NULL값을 체크하여 처음으로 NULL 아닌 값을 리턴한다. 예를 들어 컬럼1과, 컬럼2는 null인데 컬럼3이 null이 아닌 값을 갖고 있으면 처음으로 null이 아닌 컬럼3의 값을 리턴해준다. 플러스로 N번째 컬럼까지 모두 null이면 NULL을 리턴한다. COALESCE()의 내부 구현을 들여다보면, CASE WHEN.. DB/SQL 2023. 4. 1. [Oralce] ORA-01476: divisor is equal to zero - 제수가 0입니다. 쿼리를 짜다가 ORA-01476: divisor is equal to zero 에러가 발생했다. 에러가 발생한 이유는 제수가 0이기 때문이다. 즉, 분모가 0이여서 발생하는 에러이다. 분모에는 0이 올 수 없다. 운영 DB로 넘어가기 전 개발 DB에서 클렌징을 하고 다시 TEST를 진행하면서 분모가 0인 경우가 발생하여 위 에러를 마주했다.. 데이터가 많이 항상 분모는 0이 아닐 거라 생각하고 쿼리를 짜서 그랬던 것 같다. 본론으로 돌아가서, ORA-01476:divisor is equal to zero 에러 해결법은 분모 값이 0이 온다면 CASE ~ WHEN ~ THEN문 및 NVL(), COALESCE() 이용하여 해결할 수 있다. * CASE ~ WHEN ~ THEN문 및 NVL() 사용 SELE.. DB/Oracle 2023. 3. 29. [SQL] NULL값과 ‘’(공백) 비교 DB에서의 NULL을 알아보자 !!Oracle, Tibero, MSSQL에서 NULL은 없는값이 아니라 모르는값이다.그래서 AAA = NULL이 아니고 AAA IS NULL인 것이다.그렇기 때문에 없다면 ‘ ’(스페이스)를 넣어야 된다 ! 처음에는 왜 스페이스를 넣는가 했는데 이유가 있었다..!!! Oracle과 Tibero에서는 컬럼에 ‘’과 NULL은 같습니다. (‘' : 스페이스 없는 따옴표 열고닫고 ) SELECT CASE WHEN ‘’ IS NULL THEN ‘NULL’ ELSE ‘NOT NULL’ END FROM dual; : 위 쿼리의 결과는 NULL이다. 가끔 NOT IN이나 NOT LIKE를 사용하여 해당되지 않은 값은 빼고 조회할 때, NULL과 ‘’인값은 안 나오니 주의.하.. DB/SQL 2023. 3. 22. 이전 1 다음 728x90