> 데이터 베이스 > MySQL 튜토리얼 > Oracle에서 대소문자를 구분하지 않고 검색을 수행하는 방법은 무엇입니까?

Oracle에서 대소문자를 구분하지 않고 검색을 수행하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-17 11:31:09
원래의
769명이 탐색했습니다.

How to Perform Case-Insensitive Searches in Oracle?

Oracle 데이터베이스에서 대소문자를 구분하지 않고 검색 수행

Oracle 데이터베이스의 비교 연산자(예: LIKE, = 등)는 기본적으로 대소문자를 구분합니다. 이는 대소문자를 구분하지 않고 데이터를 검색해야 하는 경우 어려울 수 있습니다. 이 문제를 해결하기 위해 Oracle은 전체 텍스트 인덱스에 의존하지 않고 대소문자를 구분하지 않고 검색을 수행할 수 있는 여러 가지 방법을 제공합니다.

방법 1: 대소문자 변환

UPPER() 또는 LOWER() 함수를 사용하여 모든 데이터가 동일한 대소문자를 갖도록 강제할 수 있습니다. 예:

<code class="language-sql">select * from my_table where upper(column_1) = upper('my_string');</code>
로그인 후 복사

또는

<code class="language-sql">select * from my_table where lower(column_1) = lower('my_string');</code>
로그인 후 복사

column_1upper(column_1) 또는 lower(column_1)에 각각 인덱싱되지 않은 경우 전체 테이블 스캔이 필요할 수 있습니다. 이를 방지하려면 함수 기반 인덱스를 생성하세요.

<code class="language-sql">create index my_index on my_table ( lower(column_1) );</code>
로그인 후 복사

LIKE 연산자의 경우 검색 문자열 앞뒤에 %를 추가하세요.

<code class="language-sql">select * from my_table where lower(column_1) LIKE lower('my_string') || '%';</code>
로그인 후 복사

방법 2: 정규식

Oracle 10g부터 도입된 REGEXP_LIKE() 함수는 'i' 일치 매개변수를 지정하여 대소문자를 구분하지 않는 검색을 제공합니다.

<code class="language-sql">select * from my_table where regexp_like(column_1, '^my_string$', 'i');</code>
로그인 후 복사
로그인 후 복사

이를 항등 연산자로 사용하려면 문자열의 시작과 끝을 지정합니다(^ 및 $ 사용).

<code class="language-sql">select * from my_table where regexp_like(column_1, '^my_string$', 'i');</code>
로그인 후 복사
로그인 후 복사

LIKE 등가 검색의 경우 ^ 및 $를 삭제하세요. 검색 문자열에는 정규식 엔진에 의해 다르게 해석되는 문자가 포함될 수 있습니다.

방법 3: 세션 수준 구성

NLS_SORT 매개변수는 = 및 LIKE를 포함하여 비교의 정렬 순서를 정의합니다. BINARY_CI로 설정하여 세션의 모든 쿼리에 대해 대소문자를 구분하지 않는 정렬을 활성화할 수 있습니다.

<code class="language-sql">alter session set nls_sort=BINARY_CI;</code>
로그인 후 복사

언어 비교를 강제하기 위해 NLS_COMP를 LINGUISTIC으로 설정할 수도 있습니다.

<code class="language-sql">alter session set nls_comp=LINGUISTIC;</code>
로그인 후 복사

성능 향상을 위해 언어 색인을 생성할 수 있습니다.

<code class="language-sql">create index my_linguistc_index on my_table (NLSSORT(column_1, 'NLS_SORT = BINARY_CI'));</code>
로그인 후 복사

위 내용은 Oracle에서 대소문자를 구분하지 않고 검색을 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿