[solvesql] 언더스코어(_)가 포함되지 않은 데이터 찾기

yenpkr·2025년 3월 24일
0

sql

목록 보기
64/91

문제

제출

SELECT DISTINCT page_location
FROM ga
WHERE INSTR(page_location, '_') = 0
ORDER BY 1 asc

📌 새로 배운 내용

✅ NOT LIKE

LIKE
특정 문자가 포함되어 있는지 조회

• _ → 임의의 한 글자를 의미
• % → 임의의 여러 글자를 의미

LIKE = 'a%'
a로 시작하는 데이터

LIKE = '%a'
a로 끝나는 데이터

LIKE = '%a%'
a가 포함되는 데이터

LIKE = '_a'
a 앞에 임의의 한 글자가 포함된 데이터

NOT LIKE
특정 문자를 포함하지 않는 데이터 조회

✅ INSTR()

INSTR (문자열, 부분_문자열)
문자열 내에서 특정 부분 문자열이 처음 나타나는 위치를 찾을 때 사용하는 함수
부분 문자열이 존재하지 않으면 0을 반환

SELECT * FROM 테이블명 WHERE INSTR(열_이름, '찾을_문자열') > 0;

‘찾을문자열’이 ‘열이름’에 포함된 모든 행을 반환

SELECT * FROM 테이블명 WHERE INSTR(열_이름, '찾을_문자열') = 0;

‘찾을문자열’이 ‘열이름’에 포함되지 않은 행들을 반환

✅ ESCAPE

특정 문자(예: _, %, \ 등)를 특수한 의미가 아닌 일반 문자로 해석하도록 하는 방법

SQLite에서는 _ (임의의 한 글자)와 % (임의의 여러 글자) 같은 문자가 LIKE 연산자에서 와일드카드(특수 기능을 가진 문자) 로 동작

→ 문자로 인식되도록 설정해야 한다.

WHERE column_name LIKE '%\_%' ESCAPE '\';

✔ ESCAPE '\'는 백슬래시( \ )를 Escape 문자로 지정한다는 의미
✔ 따라서 _는 특수 기호 (임의의 한글자)가 아니라 일반 문자 로 해석됨

또 다른 답

SELECT DISTINCT page_location
FROM ga
WHERE page_location NOT LIKE '%\_%' ESCAPE '\'
ORDER BY 1 asc

0개의 댓글