LIKE 대신에 REGEXP_LIKE() 를 사용하면 코딩하는 양을 줄일 수 있다.
LIKE 사용법>
[컬럼] LIKE '%찾는문자%'
[컬럼] NOT LIKE '%찾는문자%'
특정 컬럼에서 ABC, 가나다, 123이 들어가 있는지를 확인할 때
LIKE 사용한다면
AND [컬럼] LIKE '%ABC%'
AND [컬럼] LIKE '%가나다%'
AND [컬럼] LIKE '%123%'
REGEXP_LIKE() 사용법>
# IN과 같은 효과를 볼 수 있음 - 이건 꼭 필요하다기 보다 편리하다. 하긴 다른것도 꼭 필요하다기 보다 코딩 양을 줄일 수 있는게 핵심이긴하다.
REGEXP_LIKE([컬럼], '찾는문자1|찾는문자2|찾는문자3|...');
NOT REGEXP_LIKE([컬럼], '찾는문자1|찾는문자2|찾는문자3|...');
특정 컬럼에서 ABC, 가나다, 123이 들어가 있는지를 확인할 때
REGEXP_LIKE 사용한다면
AND REGEXP_LIKE([컬럼], 'ABC|가나다|123');
퀴즈>
유저의 모든 테이블에서 DATE가 들어가 있는 컬럼을 찾는데 마지막이 숫자로 들어가는 백업테이블(예를 들어 MY_TABLE_2019)은 제외한다.
힌트>
-- 숫자로 끝나는 내용 찾기
REGEXP_LIKE([컬럼], '[0-9]$');
-- 숫자로 끝나지 않는 내용 찾기
NOT REGEXP_LIKE([컬럼], '[0-9]$');
답>
SELECT
T.TABLE_NAME
, C.COLUMN_NAME
FROM
USER_TABLES T
, USER_TAB_COLUMNS C
WHERE T.TABLE_NAME = C.TABLE_NAME
AND C.COLUMN_NAME LIKE '%DATE%'
AND NOT REGEXP_LIKE(T.TABLE_NAME, '[0-9]$');
참고>
https://docs.oracle.com/cd/B12037_01/server.101/b10759/conditions018.htm
정규식 관련 글
[Oracle] split 특수문자로 구분하기 - REGEXP_SUBSTR, 정규식, INSTR, SUBSTR
'Software > Oracle' 카테고리의 다른 글
[Oracle] 통계함수 ROLLUP() 사용하기 (0) | 2020.06.19 |
---|---|
[Oracle] 오류 보고 - ORA-01790: expression must have same datatype as corresponding expression (0) | 2020.05.27 |
[Oracle] 테이블 생성 후 Primary Key 추가, Sequence 생성 Oracle 11g R2 (0) | 2020.03.10 |
[Oracle] 한글 Byte 확인하기 - VSIZE(), LENGTHB() (0) | 2020.02.21 |
[Oracle] 사용자 생성(Create user), DBA 역할 부여(GRANT DBA ROLE), 유저 확인, 삭제, 역할회수 (0) | 2020.01.26 |