Oracle
 sql >> Datenbank >  >> RDS >> Oracle

NLS_COLLATION_NAME()-Funktion in Oracle

In der Oracle-Datenbank der NLS_COLLATION_NAME() Die Funktion gibt den Namen einer bestimmten Sortierung basierend auf ihrer ID zurück. Sie übergeben die Sortierungs-ID beim Aufrufen der Funktion und sie gibt den Sortierungsnamen zurück.

Syntax

Die Syntax lautet wie folgt:

NLS_COLLATION_NAME(expr [, flag ])

Wobei expr ist die Sortierungs-ID vom Typ NUMBER .

Das flag Argument ist ein optionales Argument, das nur für Kollatierungen des Unicode Collation Algorithm (UCA) gilt. Sie bestimmt, ob die Funktion die Kurzform oder die Langform des Sortierungsnamens zurückgeben soll.

Das flag Das Argument kann eines der folgenden sein:

Flag Beschreibung
'S' oder 's' Gibt die Kurzform des Sortierungsnamens zurück.
'L' oder 'l' Gibt die Langform des Sortierungsnamens zurück.

Der Standardwert für dieses Flag ist 'L' .

Beispiel

Hier ist ein einfaches Beispiel:

SELECT NLS_COLLATION_NAME(70)
FROM DUAL;

Ergebnis:

XAZERBAIJANI

Hier sind einige weitere Beispiele:

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

Ergebnis:

          1             2 
___________ _____________ 
FRENCH_M    CANADIAN_M   

Lang-/Kurzform-Flag

Wie bereits erwähnt, können wir ein optionales Flag übergeben, um zu bestimmen, ob die Kurzform oder die Langform des Sortierungsnamens zurückgegeben werden soll.

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

Ergebnis:

                                      Long           Short 
__________________________________________ _______________ 
UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN    UCA0620_THAI   

Der Standardwert für dieses Flag ist 'L' . Wenn wir also das Flag weglassen, wird die Langform zurückgegeben:

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

Ergebnis:

                                   Default 
__________________________________________ 
UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN   

Dieses Flag gilt jedoch nur für Unicode Collation Algorithm (UCA)-Sortierungen.

Wenn wir das Flag auf eine Nicht-UCA-Sortierung anwenden, sehen wir keinen Unterschied:

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

Ergebnis:

          1           2 
___________ ___________ 
FRENCH_M    FRENCH_M   

Ungültige Sortierung

Das Übergeben eines ungültigen Sortierungsnamens führt zu null :

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

Ergebnis:

null

Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn null tritt als Ergebnis eines SQL SELECT auf Erklärung.

Sie können jedoch SET NULL verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null zurückgegeben werden soll.

Null-Argument

Übergabe von null gibt null zurück :

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

Ergebnis:

null

Falsche Argumentanzahl

Der Aufruf der Funktion ohne Übergabe von Argumenten führt zu einem Fehler:

SELECT NLS_COLLATION_NAME()
FROM DUAL;

Ergebnis:

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:

Und das Übergeben zu vieler Argumente führt ebenfalls zu einem Fehler:

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

Ergebnis:

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: