Domanda

Dove posso interrogare l'impostazione caso sensibilità corrente di un database Oracle?

Ho provato a guardare in v$database, nls_database_parameters, e guardando attraverso i pacchetti di sistema, ma nessuno di loro sembrano fornire le informazioni che mi servono ...

È stato utile?

Soluzione

In 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

documentazione :

  

NLS_COMP specifica il comportamento collazione della sessione di database.

     

Valori:

     
      
  • BINARY

         

    In genere, i confronti nella clausola WHERE e nei blocchi PL/SQL è binaria se non si specifica la funzione NLSSORT.

  •   
  • LINGUISTIC

         

    Confronti per tutte le operazioni SQL nella clausola WHERE e nei blocchi PL/SQL dovrebbero utilizzare il tipo linguistico specificato nel parametro NLS_SORT. Per migliorare le prestazioni, è anche possibile definire un indice linguistica sulla colonna di cui si desidera confronti linguistici.

  •   
  • ANSI

         

    Un'impostazione di ANSI per compatibilità all'indietro; in generale, è necessario impostare NLS_COMP a LINGUISTIC

  •   

Altri suggerimenti

In aggiunta alle risposte già date essere consapevoli che i cambiamenti di sensibilità caso in 11g - per esempio consultare la documentazione 11g re password.

Per Oracle 10gR2 (e versioni successive), i parametri sono NLS_COMP e NLS_SORT.

select * from v$nls_parameters where parameter in ('NLS_COMP','NLS_SORT');

(questi parametri sono impostati a livello di sessione. Le impostazioni per una sessione vengono ereditate dalle impostazioni del database, a meno che non ignorato impostando una variabile d'ambiente del sistema operativo, o un'istruzione ALTER SESSION.)

Se si vuole "case-insensitive" ordinamento e string matching, si può provare queste impostazioni:

alter session set NLS_SORT=BINARY_CI;
alter session set NLS_COMP=LINGUISTIC;

Quelli non sono le uniche impostazioni dei parametri, naturalmente. documentazione di Oracle 10gR2:

10gR2 linguistica Ordinamento e String ricerca

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top