오라클 대소문자 구분 없이 검색하는 경우에 WHERE 조건
테이블의 문자열 컬럼을 대상으로 대소문자를 가리지 않고 검색을 해야할 때가 있습니다.
예를 들어 고객사의 이름이 대소문자를 구분하지 않고 저장되어 있는 경우 입니다.
SELECT * FROM CUSTOMERS; | cs |
이 경우 사용자가 고객사의 이름을 대소문자를 구분하고 외우고 있지 않는 이상
=
연산자를 사용하거나 LIKE
문을 사용하기가 어렵습니다. 만약 대소문자를 구분하여 알고 있다고 하더라도 편의적인 측면에서 매우 번거로울것입니다.이 경우 두가지로 해결이 가능한데,
WHERE
절에 저장된 데이터와 검색할 문자열 모두 대문자 또는 소문자로 변경하여 비교하는 것입니다.SELECT * FROM CUSTOMERS WHERE LOWER(NAME) = LOWER('INTL FCSTONE'); | cs |
사용자가 모든 문자열을 검색조건에 대문자로 입력했더라도 소문자로 변경하여 비교하므로 대소문자를 구분할 필요가 없습니다. 만약
LIKE
문을 사용하는 경우 아래와 같이 사용할 수 있습니다.SELECT * FROM CUSTOMERS WHERE LOWER(NAME) LIKE LOWER('%InTl%'); | cs |
UPPER
를 사용하는것도 가능합니다.SELECT * FROM CUSTOMERS WHERE UPPER(NAME) LIKE UPPER('%InTl%'); | cs |
당연하지만 모든 행의 NAME을 소문자로 변경하는 작업을 수행하므로
INDEX
컬럼인 경우 INDEX 이용이 불가능하고 데이터가 매우 많은 경우 속도가 느릴 수 있습니다.'데이터베이스[DB]' 카테고리의 다른 글
[Oracle] 오라클 행을 열로 바꾸는 PIVOT 사용법 및 설명 및 PIVOT 대체하기 (0) | 2020.08.25 |
---|---|
[Oracle] 여러행의 데이터를 하나의 행에 가로로 출력하기 LISTAGG 함수 사용법 (0) | 2020.08.23 |
[Oracle] ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다 오류 (1) | 2020.08.09 |
[MS-SQLServer] MSSQL Server 로그인시 18456 로그인 오류 원인 (0) | 2020.03.18 |
[MS-SQLServer] MS-SQL Server 서버 인증 방식 변경하는 방법 (0) | 2020.03.18 |