sql >> Databasteknik >  >> RDS >> Oracle

NLS_COLLATION_NAME() Funktion i Oracle

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:

  1. Användarkontohantering, roller, behörigheter, autentisering PHP och MySQL - Del 2

  2. Hur man hittar medelvärdet för en numerisk kolumn i SQL

  3. Integrerad transportdatamodell

  4. Hur DATE() fungerar i MariaDB