I Oracle Database, NLS_COLLATION_NAME()
funktion returnerar namnet på en given sortering, baserat på dess ID. Du skickar sorterings-ID:t när du anropar funktionen, och det returnerar sorteringsnamnet.
Syntax
Syntaxen ser ut så här:
NLS_COLLATION_NAME(expr [, flag ])
Där expr
är sorterings-ID av typen NUMBER
.
flag
argument är ett valfritt argument som endast gäller Unicode Collation Algorithm (UCA)-kollationer. Den avgör om funktionen ska returnera den korta eller långa formen av sorteringsnamnet.
flag
argument kan vara något av följande:
Flagga | Beskrivning |
---|---|
'S' eller 's' | Returnerar den korta formen av sorteringsnamnet. |
'L' eller 'l' | Returnerar den långa formen av sorteringsnamnet. |
Standardvärdet för denna flagga är 'L'
.
Exempel
Här är ett grundläggande exempel:
SELECT NLS_COLLATION_NAME(70)
FROM DUAL;
Resultat:
XAZERBAIJANI
Här är några fler exempel:
SELECT
NLS_COLLATION_NAME(4112) AS "1",
NLS_COLLATION_NAME(4116) AS "2"
FROM DUAL;
Resultat:
1 2 ___________ _____________ FRENCH_M CANADIAN_M
Flagga i lång/kort form
Som nämnts kan vi skicka en valfri flagga för att avgöra om vi ska returnera den korta eller långa formen av sorteringsnamnet.
SELECT
NLS_COLLATION_NAME(208920, 'L') AS "Long",
NLS_COLLATION_NAME(208920, 'S') AS "Short"
FROM DUAL;
Resultat:
Long Short __________________________________________ _______________ UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN UCA0620_THAI
Standardvärdet för denna flagga är 'L'
. Så om vi utelämnar flaggan returneras den långa formen:
SELECT
NLS_COLLATION_NAME(208920) AS "Default"
FROM DUAL;
Resultat:
Default __________________________________________ UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN
Denna flagga gäller dock endast för Unicode Collation Algorithm (UCA)-kollationer.
Om vi tillämpar flaggan på en icke-UCA-kollation ser vi ingen skillnad:
SELECT
NLS_COLLATION_NAME(4112, 'L') AS "1",
NLS_COLLATION_NAME(4112, 'S') AS "2"
FROM DUAL;
Resultat:
1 2 ___________ ___________ FRENCH_M FRENCH_M
Ogiltig sortering
Att skicka ett ogiltigt sorteringsnamn resulterar i null
:
SET NULL 'null';
SELECT NLS_COLLATION_NAME(4113)
FROM DUAL;
Resultat:
null
Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när null
uppstår som ett resultat av en SQL SELECT
påstående.
Du kan dock använda SET NULL
för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null
bör returneras.
Nollargument
Skickar null
returnerar null
:
SET NULL 'null';
SELECT NLS_COLLATION_NAME(null)
FROM DUAL;
Resultat:
null
Inkorrekt antal argument
Att anropa funktionen utan att skicka några argument resulterar i ett fel:
SELECT NLS_COLLATION_NAME()
FROM DUAL;
Resultat:
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:
Och att skicka för många argument resulterar också i ett fel:
SELECT NLS_COLLATION_NAME(4112, 'S', 'L')
FROM DUAL;
Resultat:
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: