Home ILIKE 쿼리 문
Post
Cancel

ILIKE 쿼리 문

회사에서 검색 조건에 대소문자를 구분하지 않고 검색을 하고 싶다는 요청이 왔는데, 현재 회사에서 사용하는 PostgreSQL에서 지원하는 ILIKE문을 사용하게 되었다.

PostgreSQL에서만 사용가능한 다양한 절이나 함수들이 존재하는 만큼 유용하게 사용할 수 있는 것 같다. 관련 해서는 또 다른 게시물로 작성 해야겠다.

개요

  • ILIKE 쿼리 문은 PostgreSQL에서 제공하는 문자열 패턴 일치 쿼리문
  • LIKE문과 유사하지만, 대소문자를 구분하지 않는 차이점 존재

기본 구문

예제1

1
2
3
SELECT column_name
FROM table_name
WHERE column_name ILIKE pattern;

이 구문에서 column_name은 패턴과 일치하는 문자열을 포함하는 열의 이름이고, pattern은 패턴을 나타내는 문자열이다.

ILIKE 쿼리 문에서 사용할 수 있는 패턴

  • %: 0개 이상의 문자와 일치
  • _: 단일 문자와 일치 (한행만 반환)
  • [abc]: 문자 a, b, 또는 c와 일치
  • [^abc]: 문자 a, b, 또는 c가 아닌 문자와 일치

예제2

1
2
3
SELECT name
FROM customers
WHERE name ILIKE 'a%';

다음 쿼리는 name 열에 a로 시작하는 문자열이 포함된 행을 반환

예제2 결과

name
-------
Alice
Anna
Anthony

예제3

1
2
3
SELECT name
FROM customers
WHERE name ILIKE 'a_';

다음 쿼리는 name 열에 a_로 시작하는 문자열이 포함된 행을 반환 즉, 'a%' LIMIT1 과 결과는 비슷하지만, %를 사용하면 _를 사용할 때보다 더 많은 행을 검색해야 함.

이는 %는 0개 이상의 문자와 일치하기 때문에, _가 포함된 패턴보다 더 많은 행이 % 패턴과 일치할 수 있기 때문임.

예제3 결과

name
-------
Alice

예제4

1
2
3
SELECT name
FROM customers
WHERE name ILIKE '[abc]%';

다음 쿼리는 name 열에 a, b, 또는 c로 시작하는 문자열이 포함된 행을 반환

예제4 결과

name
-------
Alice
Bob
Carol

예제5

1
2
3
SELECT name
FROM customers
WHERE name ILIKE '[^abc]%';

다음 쿼리는 name 열에 a, b, 또는 c로 시작하지 않는 문자열이 포함된 행을 반환

예제5 결과

name
-------
David
Eve
Frank

예제6

1
2
3
SELECT name
FROM customers
WHERE name ILIKE 'a|e%';

다음 쿼리는 name 열에 a 또는 e로 시작하는 문자열이 포함된 행을 반환

예제6 결과

name
-------
Alice
Anthony
Eve

결론

  • LIKE 쿼리 문은 데이터베이스에서 문자열을 검색하는 데 유용.
  • 대소문자를 구분하지 않고 검색해야 하는 경우 ILIKE 쿼리 문으로 원하는 결과를 얻을 수 있다.

코틀린 문법 총 정리 (1) JAVA, Kotlin 언어들의 특징

모던 자바 (1) 자바의 발전 과정