Oracleデータベースの現在の大文字と小文字を区別する設定をどこで照会できますか?
v$database
、、およびシステムパッケージを調べてみましたnls_database_parameters
が、必要な情報が提供されていないようです...
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;
もちろん、パラメータの設定はこれだけではありません。Oracle 10gR2のドキュメント: