3

Oracleデータベースの現在の大文字と小文字を区別する設定をどこで照会できますか?

v$database、、およびシステムパッケージを調べてみましたnls_database_parametersが、必要な情報が提供されていないようです...

4

3 に答える 3

5

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内のすべての操作の比較では、パラメーターで指定された言語ソートを使用する必要があります。パフォーマンスを向上させるために、言語比較が必要な列に言語インデックスを定義することもできます。WHEREPL/SQLNLS_SORT

  • ANSI

    の設定ANSIは下位互換性のためです。一般的に、次のように設定NLS_COMPする必要がありますLINGUISTIC

于 2009-08-07T13:58:14.903 に答える
1

すでに示した回答に加えて、大文字と小文字の区別が11gで変わることに注意してください。たとえば、パスワードに関する11gのドキュメントを参照してください。

于 2009-08-12T08:16:14.453 に答える
0

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のドキュメント:

10gR2言語の並べ替えと文字列検索

于 2009-08-07T14:08:30.493 に答える