SQL

[SQL] 자주 쓰는 Oracle 함수 정리2

obin01 2021. 7. 1. 10:41

1. CASE WHEN 함수

CASE WHEN publicNo = '1' THEN 'm'
     WHEN publicNo = '2' THEN 'f'
     ELSE 'Unknown'
END AS gender

if, else 와 비슷한 기능, DECODE 함수보다 복잡한 조건식에 사용, CASE 표현식에서 ELSE 부분은 생략이 가능하며, 만족하는 조건이 없으면 NULL을 리턴 (CASE WHEN 조건 THEN 리턴값)

 

2. UNION , UNION ALL

SELECT GENDER, ID FROM INFO1
UNION
SELECT NAME, ID FROM INFO2

조회한 다수의 SELECT 문을 하나로 합치고싶을때 사용

- UNION 은 결과를 합칠때 중복되는 행은 하나만 표시

- UNION ALL 은 중복제거를 하지 않고 모두 합쳐서 표시

 

3. MyBatis - CDATA

<![CDATA[부등호]]>

태그 닫힘이나 열림으로 인식하지 않고 부등호 그대로 인식하도록 할때 사용

 

4. REGEXP_REPLACE

REGEXP_REPLACE(tel_no, '(.{3})(.+)(.{4})', '\1-\2-\3') --휴대폰
REGEXP_REPLACE(tel_no, '(02|.{3})(.+)(.{4})', '\1-\2-\3') --일반 전화번호 포함

정규식 함수를 통해 포맷 형식으로 출력할때 사용

 

5. CHR(10),CHR(13)

REPLACE(REPLACE(HTML,CHR(10),''),CHR(13),'')

자바로 치면 CHR(13)은 \r 이고 CHR(10)은 \n에 해당 (CLOB타입 같은 줄바꿈이있는 문장에 사용)

 

6. ROWNUM, ROW_NUMBER()

SELECT ROWNUM, ID FROM MEM
SELECT ID FROM MEM WHERE ROWNUM = 1

SELECT ROW_NUMBER() OVER(ORDER BY ID) AS NO, ID FROM MEM

ROWNUM : 조회된 순서대로 값을 매긴다

ROW_NUMBER() : ORDER BY 순서대로 값을 매긴다