Oracle データベースの大文字と小文字の区別はどこでクエリできますか?

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_COMPLINGUISTIC

他のヒント

既に与えられた回答に加えて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のドキュメント:

10gR2の言語ソートと文字列検索

scroll top