Oracle データベースの大文字と小文字の区別はどこでクエリできますか?
-
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の場合の感度が変化することに注意してください - 例えばパスワードの再11グラムのマニュアルを参照してください。
は、Oracle 10gリリース2(およびそれ以降)の場合、パラメータは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のドキュメント: