W bazie danych Oracle NLS_COLLATION_NAME()
funkcja zwraca nazwę podanego zestawienia na podstawie jego identyfikatora. Podczas wywoływania funkcji przekazujesz identyfikator sortowania, który zwraca nazwę sortowania.
Składnia
Składnia wygląda tak:
NLS_COLLATION_NAME(expr [, flag ])
Gdzie expr
to identyfikator sortowania typu NUMBER
.
flag
argument jest argumentem opcjonalnym, który ma zastosowanie tylko do sortowania Algorytm sortowania Unicode (UCA). Określa, czy funkcja powinna zwrócić krótką czy długą formę nazwy sortowania.
flag
argument może być jednym z następujących:
Flaga | Opis |
---|---|
'S' lub 's' | Zwraca krótką formę nazwy sortowania. |
'L' lub 'l' | Zwraca długą formę nazwy sortowania. |
Domyślna wartość tej flagi to 'L'
.
Przykład
Oto podstawowy przykład:
SELECT NLS_COLLATION_NAME(70)
FROM DUAL;
Wynik:
XAZERBAIJANI
Oto kilka przykładów:
SELECT
NLS_COLLATION_NAME(4112) AS "1",
NLS_COLLATION_NAME(4116) AS "2"
FROM DUAL;
Wynik:
1 2 ___________ _____________ FRENCH_M CANADIAN_M
Flaga długa/krótka
Jak wspomniano, możemy przekazać opcjonalną flagę, aby określić, czy zwrócić krótką lub długą formę nazwy sortowania.
SELECT
NLS_COLLATION_NAME(208920, 'L') AS "Long",
NLS_COLLATION_NAME(208920, 'S') AS "Short"
FROM DUAL;
Wynik:
Long Short __________________________________________ _______________ UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN UCA0620_THAI
Domyślna wartość tej flagi to 'L'
. Więc jeśli pominiemy flagę, zwracana jest długa forma:
SELECT
NLS_COLLATION_NAME(208920) AS "Default"
FROM DUAL;
Wynik:
Default __________________________________________ UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN
Ta flaga dotyczy jednak tylko sortowania Unicode Collation Algorithm (UCA).
Jeśli zastosujemy flagę do sortowania innego niż UCA, nie widzimy różnicy:
SELECT
NLS_COLLATION_NAME(4112, 'L') AS "1",
NLS_COLLATION_NAME(4112, 'S') AS "2"
FROM DUAL;
Wynik:
1 2 ___________ ___________ FRENCH_M FRENCH_M
Nieprawidłowe sortowanie
Przekazanie nieprawidłowej nazwy sortowania skutkuje null
:
SET NULL 'null';
SELECT NLS_COLLATION_NAME(4113)
FROM DUAL;
Wynik:
null
Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null
występuje w wyniku polecenia SQL SELECT
oświadczenie.
Możesz jednak użyć SET NULL
aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null
należy zwrócić.
Argument zerowy
Przekazywanie null
zwraca null
:
SET NULL 'null';
SELECT NLS_COLLATION_NAME(null)
FROM DUAL;
Wynik:
null
Nieprawidłowa liczba argumentów
Wywołanie funkcji bez przekazywania jakichkolwiek argumentów skutkuje błędem:
SELECT NLS_COLLATION_NAME()
FROM DUAL;
Wynik:
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:
Przekazywanie zbyt wielu argumentów również skutkuje błędem:
SELECT NLS_COLLATION_NAME(4112, 'S', 'L')
FROM DUAL;
Wynik:
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: