Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Funkcja NLS_COLLATION_NAME() w Oracle

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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak stworzyć funkcję w PL/SQL?

  2. Jak utworzyć funkcję PL/SQL w bazie danych Oracle

  3. Rejestrowanie zapytań Oracle SQL

  4. Oracle:Jeśli tabela istnieje

  5. Zmień port Oracle z portu 8080