11강 SQL이 뭐지? PostgreSQL : LIKE, ILIKE operator
PostgreSQL
SQL이 뭐지? 11강 시작합니다.
이번 강의에서는
▶ LIKE operator
에 대해서 알아보겠습니다.
LIKE operator
당신이 고객을 찾고 싶지만 그녀의 이름을 정확히 기억하지 못한다고 가정해봅시다.
하지만, 여러분은 그녀의 이름이 젠(Jen)으로 시작한다는 것을 기억할 뿐입니다.
데이터베이스에서 정확한 고객을 어떻게 찾습니까? 고객 표에서 이름 열을 보고 Jen으로 시작하는 값이 있는지 확인할 수 있습니다. 고객 테이블에 행이 많으면 시간이 많이 걸립니다.
다행히도, 당신은 PostgreSQL을 사용할 수 있습니다. 고객의 이름을 다음 쿼리와 같은 문자열과 일치시키는 SQL LIKE 연산자를 사용해 찾을 수 있습니다.
SELECT first_name
, last_name
FROM customer
WHERE first_name LIKE 'Jen%'
;
WHERE 절에는 first_name, LIKE 연산자 및 퍼센트 기호(%)가 포함된 문자열이라는 특수 표현식이 포함되어 있습니다. 'Jen%'라는 문자열을 패턴이라고 합니다.
쿼리는 first_name 열의 값이 Jen으로 시작하고 임의의 문자 시퀀스 뒤에 올 수 있는 행을 반환합니다.
이 기술을 패턴 매칭이라고 합니다.
리터럴 값을 와일드카드 문자와 결합하여 패턴을 구성하고 LIKE 또는 NOT LIKE 연산자를 사용하여 일치 항목을 찾습니다. PostgreSQL은 두 개의 와일드카드를 제공합니다.
백분율 기호(%)가 0 이상의 문자 시퀀스와 일치합니다.
밑줄 기호(_)는 단일 문자와 일치합니다.
PostgreSQL의 LIKE 연산자는 다음과 같습니다.
value LIKE pattern
값이 패턴과 일치하면 식이 true를 반환합니다.
LIKE 연산자를 부인하려면 다음과 같이 NOT 연산자를 사용합니다.
value NOT LIKE pattern
NOT LIKE 연산자는 값이 패턴과 일치하지 않으면 true를 반환합니다.
패턴에 와일드카드 문자가 없는 경우 LIKE 연산자는 등호(=) 연산자처럼 동작합니다.
LIKE examples
실습 1
다음 예를 참조하십시오.
SELECT 'foo' LIKE 'foo', -- true
'foo' LIKE 'f%', -- true
'foo' LIKE '_o_', -- true
'bar' LIKE 'b_' -- false
;
어떻게 작동하는지. 살펴봅시다
foo 패턴에 와일드카드 문자가 포함되어 있지 않기 때문에 LIKE 연산자가 등호(=) 연산자처럼 작동하기 때문에 첫 번째 식을 true로 반환합니다.
두 번째 표현식은 문자 f로 시작하고 그 뒤에 오는 모든 문자열과 일치하므로 true를 반환합니다.
패턴(_o_)이 임의의 단일 문자로 시작하고 문자 o가 그 뒤를 따르고 임의의 단일 문자로 끝나는 문자열과 일치하기 때문에 세 번째 식을 true로 반환합니다.
패턴 b_가 문자 b로 시작하고 그 뒤에 오는 문자열과 일치하지 않기 때문에 네 번째 표현식은 false를 반환합니다.
패턴의 시작 또는 끝에 와일드카드를 사용할 수 있습니다.
실습 2
예를 들어, 다음 쿼리는 이름에 'er'이 포함된 Jenifer, Kimberly 등의 고객을 반환합니다.
SELECT first_name
, last_name
FROM customer
WHERE first_name LIKE '%er%'
ORDER BY first_name
;
실습 3
다음 예와 같이 %를 _과 결합하여 패턴을 구성할 수 있습니다.
SELECT first_name
, last_name
FROM customer
WHERE first_name LIKE '_her%'
ORDER BY first_name
;
_her% 패턴은 다음 문자열과 일치합니다.
임의의 단일 문자로 시작합니다 ( _ ).
그리고 그 뒤에는 her라는 글자 그대로의 문자열이 따라온다.
그리고 숫자에 관계없이 끝납니다.
돌아온 이름들은 Cheryl, Sherri, Sherry, Therasa입니다.
NOT LIKE examples
다음 쿼리는 NOT LIKE 연산자를 사용하여 이름이 Jen으로 시작하지 않는 고객을 찾습니다.
SELECT first_name
, last_name
FROM customer
WHERE first_name NOT LIKE 'Jen%'
ORDER BY first_name
;
PostgreSQL extensions of LIKE operator
PostgreSQL은 LIKE 연산자처럼 작동하는 ILIKE 연산자를 지원합니다.
또한 ILIKE 연산자는 대소문자를 구분하지 않고 값을 일치시킵니다.
SELECT first_name
, last_name
FROM customer
WHERE first_name ILIKE 'BAR%'
;
BAR% 패턴은 BAR, Bar, BaR 등으로 시작하는 문자열과 일치합니다.
LIKE 연산자와 다른 부분은 대소문자를 구분하지 않는 것입니다.
PostgreSQL Equivalent Operator
PostgreSQL은 또한 아래와 같이 LIKE, NOT LIKE, ILIKE, NOT ILIKE 연산자와 동일하게 동작하는
일부 연산자를 제공합니다..
Operator | Equivalent |
~~ | LIKE |
!~~ | NOT LIKE |
~~* | ILIKE |
!~~* | NOT ILIKE |
이 강의에서는 PostgreSQL LIKE 및 ILIKE 연산자를 사용, 패턴 일치를 사용하여 데이터를 쿼리 하는
방법에 대해 배웠습니다.
수고하셨습니다.
본 강의는 PostgreSQL Tutorial을 참조합니다.
실습용 테이블에 대해서는 3강을 참조하세요.
Do it! SQL을 찾아 주셔서 감사합니다. 여러분의 댓글이 큰 힘이 됩니다. |
'IT > SQL 기초강좌 (PostgreSQL)' 카테고리의 다른 글
13강 SQL이 뭐지? PostgreSQL Table Aliases (2) | 2022.12.16 |
---|---|
12강 SQL이 뭐지? PostgreSQL : NULL and IS NULL operator (2) | 2022.12.16 |
10강 SQL이 뭐지? PostgreSQL : BETWEEN operator (5) | 2022.12.15 |
9강 SQL이 뭐지? PostgreSQL : IN에 대해서 (2) | 2022.12.15 |
8강 SQL이 뭐지? PostgreSQL LIMIT와 FETCH (3) | 2022.12.14 |
댓글