Oracle 데이터베이스에서 대소문자를 구분하지 않는 검색 달성
Oracle의 기본 비교 연산자(=, LIKE)는 대소문자를 구분합니다. 이 가이드에서는 대소문자를 구분하지 않고 검색을 효과적으로 수행하기 위한 몇 가지 기술을 간략하게 설명합니다.
방법 1: 대소문자 변환 함수
UPPER()
또는 LOWER()
:
<code class="language-sql">SELECT * FROM my_table WHERE UPPER(column_1) = UPPER('my_string');</code>
최적의 성능을 위해 변환된 열에 함수 기반 인덱스를 생성하세요.
<code class="language-sql">CREATE INDEX my_index ON my_table (LOWER(column_1));</code>
방법 2: 정규식
Oracle 10g 이상 버전에서는 대소문자를 구분하지 않는 일치를 위해 'i' 플래그가 있는 REGEXP_LIKE()
을 제공합니다.
<code class="language-sql">SELECT * FROM my_table WHERE REGEXP_LIKE(column_1, '^my_string$', 'i');</code>
완전히 일치하려면 문자열 시작(^
) 및 문자열 끝($
) 앵커를 포함해야 합니다.
방법 3: 세션 매개변수 조정
NLS_SORT
및 NLS_COMP
세션 매개변수를 조정하면 해당 세션 내의 모든 비교에 대한 대소문자 구분이 전체적으로 변경됩니다.
<code class="language-sql">ALTER SESSION SET NLS_SORT = BINARY_CI; ALTER SESSION SET NLS_COMP = LINGUISTIC;</code>
성능을 더욱 향상하려면 언어 색인을 고려하세요.
<code class="language-sql">CREATE INDEX my_linguistic_index ON my_table (NLSSORT(column_1, 'NLS_SORT = BINARY_CI'));</code>
가장 좋은 접근 방식은 특정 요구사항에 따라 다릅니다. 그러나 모든 시나리오에서 쿼리 성능을 유지하려면 효과적인 인덱싱이 중요합니다.
위 내용은 Oracle에서 대소문자를 구분하지 않는 검색을 어떻게 수행할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!