C.W.K.
Stream
Lesson 03 of 10 · published

LIKE, GLOB, 패턴 매칭

~12 min · sql, like, glob, patterns

Level 0Scout
0 XP0/80 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

Substring 검색 제대로

SQLite 가 패턴 연산자 3 개 제공:

  • LIKE 'pat%' — SQL 표준. % = 임의 string, _ = 단일 char. ASCII A–Z 에 case-insensitive 기본; ICU 로드 안 하면 Unicode 는 case-sensitive.
  • GLOB 'pat*' — Unix 스타일. * = 임의 string, ? = 단일 char, [abc] = char class. 항상 case-sensitive. Prefix 매치엔 LIKE 보다 빠름.
  • REGEXP 'pat' — regex extension 로드한 빌드만 (피파 거는 sqlite3_extension_init 로 로드; 기본 macOS/Linux CLI 는 안 함).
Tip: 진짜 텍스트 검색 — 여러 row substring, 랭킹, 언어 토크나이징 — 이 셋 다 옳은 도구 아님. FTS5 (track 8) 가 답이야. LIKE 는 작은 테이블의 WHERE name LIKE 'al%' 정도엔 OK, 스케일 가면 무너져.

Code

LIKE 패턴·sql
SELECT * FROM users WHERE username LIKE 'al%';      -- 'al' 로 시작
SELECT * FROM users WHERE email    LIKE '%@gmail.com'; -- 으로 끝
SELECT * FROM users WHERE username LIKE 'a_ice';      -- 'alice' 또는 'arice'
SELECT * FROM users WHERE email NOT LIKE '%@%';        -- 잘못된 email

-- LIKE 는 ASCII A-Z 에 case-insensitive 기본
SELECT * FROM users WHERE username LIKE 'ALICE';      -- 'alice' 매치
GLOB — Unix 스타일, case-sensitive·sql
SELECT * FROM files WHERE path GLOB '*.py';       -- .py 로 끝
SELECT * FROM files WHERE path GLOB '[A-Z]*';     -- 대문자로 시작

External links

Exercise

TEXT 컬럼 있는 10,000-row 테이블에서 query 3 개 시간 측정: (a) 인덱스 없이 LIKE 'al%', (b) CREATE INDEX ON t(col) 후 동일, (c) 인덱스와 함께 LIKE '%al%'. 인덱스가 어떤 query 돕고 어떤 거 못 돕는지 기록. LIKE 가 옳은 도구 아니게 되는 시점 한 단락으로.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.