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

NLS_COLLATION_NAME() Funktion i Oracle

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:

  1. VÆLG / GRUPPER EFTER - tidssegmenter (10 sekunder, 30 sekunder osv.)

  2. Konverter alle poster i postgres til titelbogstav, første bogstav stort

  3. Migrering af en Oracle-database fra AWS EC2 til AWS RDS, del 4

  4. Hvordan installeres SQLcl på Windows?