I Oracle Database er NLS_COLLATION_NAME()
funktion returnerer navnet på en given sortering baseret på dens ID. Du videregiver sorterings-id'et, når du kalder funktionen, og det returnerer sorteringsnavnet.
Syntaks
Syntaksen ser sådan ud:
NLS_COLLATION_NAME(expr [, flag ])
Hvor expr
er sorterings-id'et af typen NUMBER
.
flag
argument er et valgfrit argument, der kun gælder for Unicode Collation Algorithm (UCA)-sorteringer. Det bestemmer, om funktionen skal returnere den korte eller lange form af sorteringsnavnet.
flag
argument kan være et af følgende:
Flag | Beskrivelse |
---|---|
'S' eller 's' | Returnerer den korte form af sorteringsnavnet. |
'L' eller 'l' | Returnerer den lange form af sorteringsnavnet. |
Standardværdien for dette flag er 'L'
.
Eksempel
Her er et grundlæggende eksempel:
SELECT NLS_COLLATION_NAME(70)
FROM DUAL;
Resultat:
XAZERBAIJANI
Her er nogle flere eksempler:
SELECT
NLS_COLLATION_NAME(4112) AS "1",
NLS_COLLATION_NAME(4116) AS "2"
FROM DUAL;
Resultat:
1 2 ___________ _____________ FRENCH_M CANADIAN_M
Flag i lang/kort form
Som nævnt kan vi sende et valgfrit flag for at bestemme, om vi skal returnere den korte eller lange form af sorteringsnavnet.
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ærdien for dette flag er 'L'
. Så hvis vi udelader flaget, returneres den lange form:
SELECT
NLS_COLLATION_NAME(208920) AS "Default"
FROM DUAL;
Resultat:
Default __________________________________________ UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN
Dette flag gælder dog kun for Unicode Collation Algorithm (UCA) kollationer.
Hvis vi anvender flaget på en ikke-UCA-sortering, ser vi ingen forskel:
SELECT
NLS_COLLATION_NAME(4112, 'L') AS "1",
NLS_COLLATION_NAME(4112, 'S') AS "2"
FROM DUAL;
Resultat:
1 2 ___________ ___________ FRENCH_M FRENCH_M
Ugyldig sortering
Ved at videregive et ugyldigt sorteringsnavn resulterer det i null
:
SET NULL 'null';
SELECT NLS_COLLATION_NAME(4113)
FROM DUAL;
Resultat:
null
Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når null
opstår som et resultat af en SQL SELECT
udmelding.
Du kan dog bruge SET NULL
for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null
skal returneres.
Nul-argument
Sender null
returnerer null
:
SET NULL 'null';
SELECT NLS_COLLATION_NAME(null)
FROM DUAL;
Resultat:
null
Forkert antal argumenter
Kaldning af funktionen uden at sende nogen argumenter resulterer i en fejl:
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:
Og at sende for mange argumenter resulterer også i en fejl:
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: