LIKE
는 대소문자를 구분하며, ILIKE
는 대소문자를 구분하지 않는다.
SELECT COUNT(*)
FROM ufo
WHERE description LIKE '%wife%';
SELECT COUNT(*)
FROM ufo
WHERE LOWER(description) LIKE '%wife%';
첫 번째는 6231개, 두 번째는 6439개로 다른 개수가 나타났다. 첫 번째의 경우 Wife와 wife가 서로 다른 글자로 인식되기 때문이다. 대소문자 상관 없이 Wife나 wife 글자가 들어간 description의 행의 개수는 총 6439개이다.
SELECT COUNT(*)
FROM ufo
WHERE description ILIKE '%wife%';
SELECT COUNT(*)
FROM ufo
WHERE LOWER(description) ILIKE '%wife%';
ILIKE는 대소문자를 구분하지 않기 때문에 두 경우 모두 같은 개수가 나타난다.
SELECT COUNT(*)
FROM ufo
WHERE LOWER(description) LIKE '%wife%'
OR LOWER(description) LIKE '%husband%';
SELECT COUNT(*)
FROM ufo
WHERE LOWER(description) LIKE '%wife%'
OR LOWER(description) LIKE '%husband%'
AND LOWER(description) LIKE '%mother%';
SELECT description
FROM ufo
WHERE (LOWER(description) LIKE '%wife%'
OR LOWER(description) LIKE '%husband%')
AND LOWER(description) LIKE '%mother%';
AND가 OR보다 우선순위가 높다. -> AND > OR
OR를 우선순위로 적용하고 싶다면 괄호()
를 통해 우선순위를 지정해주어야 한다.
UFO를 목격한 설명이 담긴 description 컬럼에 driving, walking, running, swimming 단어가 담겨 있는 경우의 개수를 센다.
SELECT
(CASE
WHEN LOWER(description) LIKE '%driving%' THEN 'driving'
WHEN LOWER(description) LIKE '%walking%' THEN 'walking'
WHEN LOWER(description) LIKE '%%running' THEN 'running'
WHEN LOWER(description) LIKE '%swimming%' THEN 'swimming'
ELSE 'none'
END) AS activity,
COUNT(*)
FROM ufo
GROUP BY 1
ORDER BY 2 DESC;
WHERE
절에 사용하는 경우가 많다.SELECT
절에 사용할 경우 True or False
의 값을 반환해준다.SELECT
description ILIKE '%south%' AS south,
description ILIKE '%north%' AS north,
description ILIKE '%east%' AS east,
description ILIKE '%west%' AS west,
COUNT(*)
FROM ufo
GROUP BY 1, 2, 3, 4
ORDER BY 1, 2, 3, 4;
UFO를 목격한 설명이 담긴 description 컬럼에 south, north, east, west 단어가 들어가는 경우의 개수를 센다.
SELECT
COUNT(CASE WHEN description ILIKE '%south%' THEN 1 END) AS south,
COUNT(CASE WHEN description ILIKE '%north%' THEN 1 END) AS north,
COUNT(CASE WHEN description ILIKE '%east%' THEN 1 END) AS east,
COUNT(CASE WHEN description ILIKE '%west%' THEN 1 END) AS west
FROM ufo;