상세 컨텐츠

본문 제목

[SQL] REGEXP 응용

SQL

by ollive 2024. 9. 2. 14:22

본문

문제 : DIAB1로 시작하는 문자열 추출

-- patients who have Type I Diabetes. always starts with DIAB1 prefix.

SELECT *
FROM Patients

방법 1
WHERE conditions LIKE '% DIAB1%' OR conditions LIKE 'DIAB1%'

방법 2
WHERE conditions REGEXP '\\bDIAB1'# Write your MySQL query statement below

방법 3
WHERE REGEXP_LIKE(conditions, '\\bDIAB1')

방법 1 

- LIKE를 이용해 문자열 내의 특정단어와 일치하는지 찾는 방법
- DIAB1%으로 문자열의 시작에 있는 단어를 찾거나, % DIAB1% 을 이용하여 문자열 가운데에서 시작하는 단어도 찾아낼 수 있음
 

 

방법 2

- REGEXP를 이용해 문자열 대 특정단어와 일치하는지 찾는 방법
- REGEXP ' DIAB1 '를 이용하면 문자열 내에 속해있는 ' DIAB1'을 찾을 수 있지만 각 단어의 시작이 아니어도 일치한다면 추출처리됨 ('DIDIAB110' 같은 단어로, '10년전 냉장고'를 찾는다 할때  '2210년전 냉장고' 또는 '1910년전 냉장고' 가 추출될 수 있음) 
- 따라서 \b(이스케이프 코드)를 사용하여 독립 단어로 만들어준다.('Type1 DIAB1'은 'DIAB1'과 일치하지만 'DIAB10'이나 ' Type1DIAB1' 은 일치하지 않음)
- \(이스케이프 코드)를 조건으로 사용하기 위해선 \를 추가해 \\b를 만들어주어야 정규표현식으로 작용된다.

 

관련글 더보기