LIKE - Amazon Redshift

LIKE

LIKE 연산자는 열 이름 같은 문자열 표현식과 %(퍼센트) 및 _(밑줄) 와일드카드 문자의 사용 패턴을 서로 비교합니다. LIKE 패턴 일치는 항상 전체 문자열을 검색합니다. 문자열 내 아무 곳에서나 시퀀스를 일치시키려면 패턴이 퍼센트 기호로 시작해서 끝나야 합니다.

LIKE는 대/소문자를 구분하지만 ILIKE는 대/소문자를 구분하지 않습니다.

구문

expression [ NOT ] LIKE | ILIKE pattern [ ESCAPE 'escape_char' ]

인수

expression

열 이름 같이 유효한 UTF-8 문자 표현식입니다.

LIKE | ILIKE

LIKE는 대/소문자를 구분하여 패턴을 일치시킵니다. ILIKE는 단일 바이트 UTF-8(ASCII) 문자일 때 대/소문자를 구분하지 않고 패턴을 일치시킵니다. 멀티바이트 문자에 대해 대/소문자를 구분하지 않는 패턴 일치를 수행하려면 LIKE 조건이 있는 expressionpatternLOWER 함수를 사용합니다.

비교 조건자(예: = 및 <>)와 달리 LIKE 및 ILIKE 조건자는 후행 공백을 묵시적으로 무시하지 않습니다. 후행 공백을 무시하려면 RTRIM을 사용하거나 CHAR 열을 VARCHAR로 명시적으로 캐스트합니다.

~~ 연산자는 LIKE와 동일하며 ~~*는 ILIKE와 동일합니다. 또한 !~~!~~* 연산자는 NOT LIKE 및 NOT ILIKE와 동일합니다.

패턴

일치시킬 패턴이 포함된, 유효한 UTF-8 문자 표현식입니다.

escape_char

패턴의 메타 문자를 이스케이프 처리하는 문자 표현식입니다. 기본값은 백슬래시 2개('\\')입니다.

pattern에 메타 문자가 포함되어 있지 않으면 패턴이 문자열 자체만 의미합니다. 이런 경우에는 LIKE가 등호 연산자와 동일한 역할을 합니다.

문자 표현식 중 하나는 CHAR 또는 VARCHAR 데이터 형식이 될 수 있습니다. 데이터 형식이 서로 다른 경우에는 Amazon Redshift가 patternexpression의 데이터 형식으로 변환합니다.

LIKE에서 지원되는 패턴 일치 메타 문자는 다음과 같습니다.

연산자 설명
% 0개 이상의 문자 시퀀스를 일치시킵니다.
_ 모든 문자를 일치시킵니다.

다음 표는 LIKE를 사용한 패턴 일치의 예를 나타낸 것입니다.

표현식 반환 값
'abc' LIKE 'abc' True
'abc' LIKE 'a%' True
'abc' LIKE '_B_' False
'abc' ILIKE '_B_' True
'abc' LIKE 'c%' False

다음은 이름이 "E"로 시작하는 도시를 모두 찾는 예입니다.

select distinct city from users where city like 'E%' order by city; city --------------- East Hartford East Lansing East Rutherford East St. Louis Easthampton Easton Eatontown Eau Claire ...

다음은 성에 "ten"이 포함된 사용자를 찾는 예입니다.

select distinct lastname from users where lastname like '%ten%' order by lastname; lastname ------------- Christensen Wooten ...

다음 예제에서는 여러 패턴을 매칭하는 방법을 보여줍니다.

select distinct lastname from tickit.users where lastname like 'Chris%' or lastname like '%Wooten' order by lastname; lastname ------------- Christensen Christian Wooten ...

다음은 세 번째와 네 번째 문자가 "ea"인 도시를 찾는 예입니다. 이 명령에서는 ILIKE를 사용하여 대/소문자를 구분하지 않고 있습니다.

select distinct city from users where city ilike '__EA%' order by city; city ------------- Brea Clearwater Great Falls Ocean City Olean Wheaton (6 rows)

다음은 기본 이스케이프 문자열(\\)을 사용하여 'start_'(텍스트 start 뒤에 밑줄 _가 붙음)가 포함된 문자열을 찾는 예입니다.

select tablename, "column" from pg_table_def where "column" like '%start\\_%' limit 5; tablename | column -------------------+--------------- stl_s3client | start_time stl_tr_conflict | xact_start_ts stl_undone | undo_start_ts stl_unload_log | start_time stl_vacuum_detail | start_row (5 rows)

다음은 '^'을 이스케이프 문자로 지정한 후 이 이스케이프 문자를 사용하여 'start_'(텍스트 start 뒤에 밑줄 _가 붙음)가 포함된 문자열을 찾는 예입니다.

select tablename, "column" from pg_table_def where "column" like '%start^_%' escape '^' limit 5; tablename | column -------------------+--------------- stl_s3client | start_time stl_tr_conflict | xact_start_ts stl_undone | undo_start_ts stl_unload_log | start_time stl_vacuum_detail | start_row (5 rows)

다음 예시에서는 ~~* 연산자를 사용하여 'Ag'로 시작하는 도시에 대해 대소문자를 구분하지 않는(ILIKE) 검색을 수행합니다.

select distinct city from users where city ~~* 'Ag%' order by city; city ------------ Agat Agawam Agoura Hills Aguadilla