์ ์์ ์ด์ ์ง์ ๋ ํจํด ๊ฒ์ํ๋๋ฐ ์ฌ์ฉ
LIKE
-- 'b'๋ก ์์ํ๋ name ์กฐํ
SELECT * FROM T_1
WHERE name LIKE 'b%'
-- 'fy'๋ก ๋๋๋ name ์กฐํ
SELECT * FROM T_1
WHERE name LIKE '%fy'
-- 'f'๋ฅผ ํฌํจํ๋ name ์กฐํ
SELECT * FROM T_1
WHERE name LIKE '%f%'
-- 'f'๋ก ์์ํ๋ 4๊ธ์ name ์กฐํ
SELECT * FROM T_1
WHERE name LIKE 'f___'
-- 'p'๋ก ๋๋๋ 3๊ธ์ name ์กฐํ
SELECT * FROM T_1
WHERE name LIKE '__p'
-- 4๊ธ์ name ์กฐํ
SELECT * FROM T_1
WHERE name LIKE '____'
๋ถ๋ฑํธ ์ฐ์ฐ์ '='๋ ์ซ์ ๋ฐ์ดํฐ ์ ํ์์ ์ฌ์ฉํ๊ณ ,
LIKE ์ฐ์ฐ์๋ ๋ฌธ์์ด ๋ฐ์ดํฐ์ ํจํด ๋งค์นญ ๋ฐ ๊ฒ์์ ์ฌ์ฉ๋๋ค
NOT LIKE
ํน์ ๋ฌธ์๊ฐ ํฌํจ๋์ด ์์ง ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์
-- 'b'๋ก ์์ํ์ง ์๋ name ์กฐํ
SELECT * FROM T_1
WHERE name NOT LIKE 'b%'
-- 'fy'๋ก ๋๋์ง ์๊ณ 'g'๊ฐ ํฌํจ๋์ง ์์ name ์กฐํ
SELECT * FROM T_1
WHERE name NOT LIKE '%fy' AND name NOT LIKE '%g%'
LIKE/NOT LIKE '%' ์์น์ ๋ฐ๋ฅธ ์ธ๋ฑ์ค ์ฌ์ฉ ์ฌ๋ถ
'๋จ์ด%'๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์ํ ๋๋ ๋ถ๋ถ ๋ฌธ์์ด ๊ฒ์์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง,
'%๋จ์ด' ๋๋ '%๋จ์ด%'๋ก ์กฐํํ ๋๋ ์ธ๋ฑ์ค๊ฐ ์ ์ฉ๋์ง ์๊ณ ํ ์ด๋ธ Full Scan(ํ ์ด๋ธ์ ํฌํจ๋ ๋ ์ฝ๋๋ฅผ ์ฒ์๋ถํฐ ๋๊น์ง ์ฝ์ด๋ค์)์ด ๋ฐ์
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค์ ์๋ฃ๊ตฌ์กฐ๋ ๋๋ถ๋ถ B-TREE ๊ตฌ์กฐ → ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ค๋ฆ์ฐจ์ ํํ๋ก ๋ค๊ณ ์๊ธฐ ๋๋ฌธ์ ํน์ ๋ฌธ์์ด๋ก ์์ํ๋ ๋ฐ์ดํฐ์ ์ฃผ์๊ฐ์ ์ ์ ์์ง๋ง, ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์ ๋ชจ๋ ํ ์ด๋ธ์ ๋ค ๋ค์ ธ์ผ๋ง ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์๋ค
๋ฐ์ดํฐ ์์ด ๋งค์ฐ ๋ง์ ํ ์ด๋ธ์ ๋ํด ๊ฒ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ค๋ฉด Full-Text Search ๋ฐฉ์์ ํ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค
REGEXP
์ ๊ทํํ์์ ์ด์ฉํ ํจํด ๋งค์นญ
REGEXP = REGEXP_LIKE = RLIKE
-- 'w' ๋๋ 's'๊ฐ ํฌํจ๋ name ์กฐํ
SELECT * FROM PET
WHERE name REGEXP 'w|s'
-- 'a' ๋๋ 'e' ๋๋ 'i'๋ก ์์ํ๋ name ์กฐํ
SELECT * FROM PET
WHERE name REGEXP '^[aei]'
-- name์ด 'ass' ๋๋ 'ess' ๋๋ 'iss'
SELECT * FROM PET
WHERE name REGEXP '[aei]ss'
-- 'o'๊ฐ 1๋ฒ ์ด์ ๋ฑ์ฅํ๋ name ์กฐํ (ex 'o', 'zoo', 'stratovolcano')
SELECT * FROM PET
WHERE name REGEXP 'a+'
-- 'a'๋ฅผ ํฌํจํ์ง ์๋ name ์กฐํ
SELECT * FROM PET
WHERE name REGEXP '[^a]'
-- 'b'๋ก ์์ํ๋ name ์กฐํ
SELECT * FROM PET
WHERE REGEXP_LIKE(name, '^b')
-- 'fy'๋ก ๋๋๋ name ์กฐํ
SELECT * FROM PET
WHERE REGEXP_LIKE(name, 'fy$')
-- 'w'๋ฅผ ํฌํจํ๋ name ์กฐํ
SELECT * FROM PET
WHERE REGEXP_LIKE(name, 'w')
-- 5๊ฐ์ ๋ฌธ์๊ฐ ํฌํจ๋ name ์กฐํ
SELECT * FROM PET
WHERE REGEXP_LIKE(name, '^.....$')
SELECT * FROM PET
WHERE REGEXP_LIKE(name, '^.{5}$')
'๐ SQL > ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๋ฐ์ดํฐ ํ์ ๋ณํ CAST / CONVERT (0) | 2025.02.23 |
|---|---|
| MAX()์ LIMIT 1 (0) | 2025.02.22 |
| JOIN (0) | 2025.02.19 |
| GROUP BY (0) | 2025.02.19 |
| ์ซ์ ํจ์ (0) | 2025.02.18 |