오라클 데이터베이스의 대소문자 구분은 어디에서 쿼리할 수 있나요?

StackOverflow https://stackoverflow.com/questions/1244804

문제

Oracle 데이터베이스의 현재 대소문자 구분 설정을 어디에서 쿼리할 수 있나요?

나는 들여다 보려고 노력했다. v$database, nls_database_parameters, 시스템 패키지를 살펴보았지만 그 중 어느 것도 필요한 정보를 제공하지 않는 것 같습니다...

도움이 되었습니까?

해결책

~ 안에 Oracle 10gR2:

SELECT  *
FROM    NLS_SESSION_PARAMETERS
WHERE   parameter IN ('NLS_COMP', 'NLS_SORT')

SQL> ALTER SESSION SET NLS_COMP = 'LINGUISTIC'
  2  /

Session altered
SQL> SELECT  COUNT(*)
  2  FROM    dual
  3  WHERE   'a' = 'A'
  4  /

  COUNT(*)
----------
         1

SQL> ALTER SESSION SET NLS_COMP = 'BINARY'
  2  /

Session altered
SQL> SELECT  COUNT(*)
  2  FROM    dual
  3  WHERE   'a' = 'A'
  4  /

  COUNT(*)
----------
         0

에서 선적 서류 비치:

NLS_COMP 데이터베이스 세션의 데이터 정렬 동작을 지정합니다.

값:

  • BINARY

    일반적으로 비교에서는 WHERE 조항과 PL/SQL 블록은 지정하지 않는 한 바이너리입니다. NLSSORT 기능.

  • LINGUISTIC

    모두에 대한 비교 SQL 의 운영 WHERE 조항과 PL/SQL 블록은 다음에 지정된 언어 정렬을 사용해야 합니다. NLS_SORT 매개변수.성능을 향상시키기 위해 언어 비교를 원하는 열에 언어 인덱스를 정의할 수도 있습니다.

  • ANSI

    설정 ANSI 이전 버전과의 호환성을 위한 것입니다.일반적으로 다음을 설정해야 합니다. NLS_COMP 에게 LINGUISTIC

다른 팁

이미 제공된 답변 외에도 11g에서는 대소문자 구분이 변경된다는 점에 유의하세요.비밀번호에 대한 11g 문서를 참조하세요.

Oracle 10gR2(및 이후 버전)의 경우 매개변수는 NLS_COMP 및 NLS_SORT입니다.

select * from v$nls_parameters where parameter in ('NLS_COMP','NLS_SORT');

(이러한 매개변수는 세션 수준에서 설정됩니다.OS 환경 변수 또는 ALTER SESSION 문을 설정하여 재정의하지 않는 한 세션 설정은 데이터베이스 설정에서 상속됩니다.

"대소문자를 구분하지 않는" 정렬 및 문자열 일치를 원하는 경우 다음 설정을 시도해 볼 수 있습니다.

alter session set NLS_SORT=BINARY_CI;
alter session set NLS_COMP=LINGUISTIC;

물론 이것이 매개변수에 대한 유일한 설정은 아닙니다.오라클 10gR2 문서:

10gR2 언어 정렬 및 문자열 검색

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top