Home LIKE, ILIKE
Post
Cancel

LIKE, ILIKE

와일드카드 매칭 LIKE vs ILIKE

LIKE는 대소문자를 구분하며, ILIKE는 대소문자를 구분하지 않는다.


LIKE

1
2
3
SELECT COUNT(*)
FROM ufo
WHERE description LIKE '%wife%';


1
2
3
SELECT COUNT(*)
FROM ufo
WHERE LOWER(description) LIKE '%wife%';


첫 번째는 6231개, 두 번째는 6439개로 다른 개수가 나타났다. 첫 번째의 경우 Wife와 wife가 서로 다른 글자로 인식되기 때문이다. 대소문자 상관 없이 Wife나 wife 글자가 들어간 description의 행의 개수는 총 6439개이다.


ILIKE

1
2
3
SELECT COUNT(*)
FROM ufo
WHERE description ILIKE '%wife%';
1
2
3
SELECT COUNT(*)
FROM ufo
WHERE LOWER(description) ILIKE '%wife%';


ILIKE는 대소문자를 구분하지 않기 때문에 두 경우 모두 같은 개수가 나타난다.


wife 또는 husband가 들어간 행의 수

1
2
3
4
SELECT COUNT(*)
FROM ufo
WHERE LOWER(description) LIKE '%wife%'
	OR LOWER(description) LIKE '%husband%';


AND, OR 우선순위

1
2
3
4
5
SELECT COUNT(*)
FROM ufo
WHERE LOWER(description) LIKE '%wife%'
	OR LOWER(description) LIKE '%husband%'
	AND LOWER(description) LIKE '%mother%';


1
2
3
4
5
SELECT description
FROM ufo
WHERE (LOWER(description) LIKE '%wife%'
	OR LOWER(description) LIKE '%husband%')
	AND LOWER(description) LIKE '%mother%';


AND가 OR보다 우선순위가 높다. -> ** AND > OR**
OR를 우선순위로 적용하고 싶다면 괄호()를 통해 우선순위를 지정해주어야 한다.


driving, walking, running, swimming

UFO를 목격한 설명이 담긴 description 컬럼에 driving, walking, running, swimming 단어가 담겨 있는 경우의 개수를 센다.

1
2
3
4
5
6
7
8
9
10
11
12
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;


SELECT절에 와일드카드 매칭 사용

  • 보통 LIKE나 ILIKE를 사용할 때 WHERE 절에 사용하는 경우가 많다.
  • 그러나 SELECT 절에 사용할 경우 True or False의 값을 반환해준다.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    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;
    


south, north, east, west

UFO를 목격한 설명이 담긴 description 컬럼에 south, north, east, west 단어가 들어가는 경우의 개수를 센다.

1
2
3
4
5
6
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;

This post is licensed under CC BY 4.0 by the author.