Oracle
 sql >> Database >  >> RDS >> Oracle

NLS_COLLATION_NAME() Funzione in Oracle

In Oracle Database, il NLS_COLLATION_NAME() La funzione restituisce il nome di una determinata confronto, in base al suo ID. Si passa l'ID di confronto quando si chiama la funzione, che restituisce il nome di confronto.

Sintassi

La sintassi è questa:

NLS_COLLATION_NAME(expr [, flag ])

Dove expr è l'ID di confronto di tipo NUMBER .

Il flag argomento è un argomento facoltativo che si applica solo alle regole di confronto Unicode Collation Algorithm (UCA). Determina se la funzione deve restituire la forma breve o la forma lunga del nome delle regole di confronto.

Il flag argomento può essere uno dei seguenti:

Bandiera Descrizione
'S' o 's' Restituisce la forma abbreviata del nome di confronto.
'L' o 'l' Restituisce la forma lunga del nome di confronto.

Il valore predefinito per questo flag è 'L' .

Esempio

Ecco un esempio di base:

SELECT NLS_COLLATION_NAME(70)
FROM DUAL;

Risultato:

XAZERBAIJANI

Ecco altri esempi:

SELECT 
    NLS_COLLATION_NAME(4112) AS "1",
    NLS_COLLATION_NAME(4116) AS "2"
FROM DUAL;

Risultato:

          1             2 
___________ _____________ 
FRENCH_M    CANADIAN_M   

Bandiera a forma lunga/corta

Come accennato, possiamo passare un flag facoltativo per determinare se restituisce la forma breve o la forma lunga del nome di confronto.

SELECT 
    NLS_COLLATION_NAME(208920, 'L') AS "Long",
    NLS_COLLATION_NAME(208920, 'S') AS "Short"
FROM DUAL;

Risultato:

                                      Long           Short 
__________________________________________ _______________ 
UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN    UCA0620_THAI   

Il valore predefinito per questo flag è 'L' . Quindi, se omettiamo il flag, viene restituito il modulo lungo:

SELECT 
    NLS_COLLATION_NAME(208920) AS "Default"
FROM DUAL;

Risultato:

                                   Default 
__________________________________________ 
UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN   

Questo flag si applica solo alle regole di confronto Unicode Collation Algorithm (UCA).

Se applichiamo il flag a una confronto non UCA, non vediamo alcuna differenza:

SELECT 
    NLS_COLLATION_NAME(4112, 'L') AS "1",
    NLS_COLLATION_NAME(4112, 'S') AS "2"
FROM DUAL;

Risultato:

          1           2 
___________ ___________ 
FRENCH_M    FRENCH_M   

Fascicolazione non valida

Il passaggio di un nome di confronto non valido risulta null :

SET NULL 'null';
SELECT NLS_COLLATION_NAME(4113)
FROM DUAL;

Risultato:

null

Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che null si verifica come risultato di un SQL SELECT dichiarazione.

Tuttavia, puoi utilizzare SET NULL per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null deve essere restituito.

Argomento nullo

Passaggio null restituisce null :

SET NULL 'null';
SELECT NLS_COLLATION_NAME(null)
FROM DUAL;

Risultato:

null

Conteggio argomenti errato

La chiamata della funzione senza passare alcun argomento genera un errore:

SELECT NLS_COLLATION_NAME()
FROM DUAL;

Risultato:

Error starting at line : 1 in command -
SELECT NLS_COLLATION_NAME()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"
*Cause:    
*Action:

E anche passare troppi argomenti provoca un errore:

SELECT NLS_COLLATION_NAME(4112, 'S', 'L')
FROM DUAL;

Risultato:

Error starting at line : 1 in command -
SELECT NLS_COLLATION_NAME(4112, 'S', 'L')
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*Cause:    
*Action: