오라클 데이터베이스의 대소문자 구분은 어디에서 쿼리할 수 있나요?
-
12-09-2019 - |
문제
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 문서: