Dove posso interrogare un database Oracle maiuscole e minuscole?
-
12-09-2019 - |
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 ...
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
NLS_COMP
specifica il comportamento collazione della sessione di database.Valori:
BINARY
In genere, i confronti nella clausola
WHERE
e nei blocchiPL/SQL
è binaria se non si specifica la funzioneNLSSORT
.
LINGUISTIC
Confronti per tutte le operazioni
SQL
nella clausolaWHERE
e nei blocchiPL/SQL
dovrebbero utilizzare il tipo linguistico specificato nel parametroNLS_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 impostareNLS_COMP
aLINGUISTIC
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: