LIKE 조건식

설명

LIKE 조건식은 문자열 데이터 간의 패턴을 비교하는 연산을 수행하여, 검색어와 일치하는 패턴의 문자열이 검색되면 TRUE를 반환한다. 패턴 비교 대상이 되는 도메인은 CHAR, VARCHAR, STRING이며, NCHAR 또는 BIT 타입에 대해서는 LIKE 검색을 수행할 수 없다. LIKE 키워드 앞에 NOT이 있으면 LIKE 연산의 결과에 NOT 연산을 수행하여 결과를 반환한다.

LIKE 연산자 오른쪽에 오는 검색어에는 임의의 문자 또는 문자열에 대응되는 와일드 카드(wild card) 문자열을 포함할 수 있으며, %(percent)와 _(underscore)를 사용할 수 있다. %는 길이가 0 이상인 임의의 문자열에 대응되며, _는 1개의 문자에 대응된다. 또한, 이스케이프 문자(escape character)는 와일드 카드 문자 자체에 대한 검색을 수행할 때 사용되는 문자로서, 사용자에 의해 길이가 1인 다른 문자(NULL, 알파벳 또는 숫자)로 지정될 수 있다. 와일드 카드 문자 또는 이스케이프 문자를 포함하는 문자열을 검색어로 사용하는 예제는 아래를 참고한다.

구문

expression [ NOT ] LIKE expression [ ESCAPE char]

참고 사항

LIKE 조건식은 대소문자를 구분한다. 대소문자를 구분하지 않게 하려면 RLIKE 조건식을 이용한다.

UTF-8과 같은 멀티바이트 문자 세트 환경에서 입력된 데이터에 대해서는 LIKE 검색 결과가 정상적이지 않을 수 있다. 이는 문자 세트에 따라 문자열 비교 연산을 수행하는 바이트 단위가 다르기 때문이며, 1바이트 단위로 문자열 비교를 수행하도록 하는 파라미터(single_byte_compare=yes)를 cubrid.conf 파일에 추가한 후 DB를 재가동하면 정상적인 검색 결과를 얻을 수 있다.

CUBRID가 지원하는 문자 세트에 관한 상세한 설명은 문자열 데이터 타입을 참고하며, single_byte_compare 파라미터에 관한 상세한 설명은 기타 파라미터를 참고한다.

LIKE 조건식의 이스케이프 문자 인식은 cubrid.conf 파일의 no_backslash_escapes 파라미터와 require_like_escape_character 파라미터의 설정에 따라 달라진다. 이에 대한 상세한 설명은 구문/타입 관련 파라미터를 참고한다.

예제

--selection rows where name contains lower case 's', not upper case

SELECT * FROM condition_tbl WHERE name LIKE '%s%';

           id  name                  dept_name                  salary

======================================================================

            3  'Jones     '          'sales'                   5400000

 

--selection rows where second letter is 'O' or 'o'

SELECT * FROM condition_tbl WHERE UPPER(name) LIKE '_O%';

           id  name                  dept_name                  salary

======================================================================

            2  'Moy       '          'sales'                   3000000

            3  'Jones     '          'sales'                   5400000

 

--selection rows where name is 3 characters

SELECT * FROM condition_tbl WHERE name LIKE '___';

           id  name                  dept_name                  salary

======================================================================

            1  'Kim       '          'devel'                   4000000

            2  'Moy       '          'sales'                   3000000

            5  'Kim       '          'account'                 3800000