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

COLLATION() Funkcja w Oracle

W bazie danych Oracle COLLATION() funkcja zwraca nazwę uzyskanego porównania dla swojego argumentu.

Składnia

Składnia wygląda tak:

COLLATION(expr)

Gdzie expr musi ewaluować do ciągu znaków typu CHAR , VARCHAR2 , LONG , NCHAR lub NVARCHAR2 .

Przykład

Oto podstawowy przykład:

SELECT COLLATION('Boat')
FROM DUAL;

Wynik:

USING_NLS_COMP

Przykład z COLLATE Klauzula

Oto, co się dzieje, gdy używamy COLLATE klauzula wyraźnie określająca sortowanie:

SELECT COLLATION('Boat' COLLATE LATIN_AI) 
FROM DUAL;

Wynik:

LATIN_AI

Rozważenie podczas korzystania z NLS_SORT

COLLATION() funkcja zwraca tylko sortowanie powiązane z danymi, a nie sortowanie dynamiczne ustawione przez NLS_SORT parametr.

Przykład:

SELECT COLLATION('Boat' COLLATE USING_NLS_SORT) 
FROM DUAL;

Wynik:

USING_NLS_SORT

Możesz użyć SYS_CONTEXT() funkcja zwracająca wartość NLS_SORT parametr:

SELECT SYS_CONTEXT('USERENV','NLS_SORT')
FROM DUAL;

Wynik:

BINARY

Jednak każdy sufiks, taki jak _CI , _AI i _CS jest zwracany:

SELECT 
    COLLATION('Boat' COLLATE USING_NLS_SORT_CI) AS "_CI",
    COLLATION('Boat' COLLATE USING_NLS_SORT_CS) AS "_CS",
    COLLATION('Boat' COLLATE USING_NLS_SORT_AI) AS "_AI"
FROM DUAL;

Wynik:

                 _CI                  _CS                  _AI 
____________________ ____________________ ____________________ 
USING_NLS_SORT_CI    USING_NLS_SORT_CS    USING_NLS_SORT_AI    

Argument zerowy

Porównywanie jest zwracane, nawet przy przekazaniu null :

SELECT COLLATION(null)
FROM DUAL;

Wynik:

USING_NLS_COMP

Nieprawidłowa liczba argumentów

Wywołanie funkcji bez przekazywania jakichkolwiek argumentów skutkuje błędem:

SELECT COLLATION()
FROM DUAL;

Wynik:

Error starting at line : 1 in command -
SELECT COLLATION()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

Przekazywanie zbyt wielu argumentów również skutkuje błędem:

SELECT COLLATION('Boat', 'Dang')
FROM DUAL;

Wynik:

Error starting at line : 1 in command -
SELECT COLLATION('Boat', 'Dang')
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*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. Wybierz N-ty wiersz z tabeli w Oracle

  2. sqlplus jak znaleźć szczegóły aktualnie połączonej sesji bazy danych

  3. Metoda gromadzenia:procedura DELETE w bazie danych Oracle

  4. Zachowaj zamówienie z klauzuli „IN”

  5. Oracle SqlPlus - zapisywanie danych wyjściowych w pliku, ale nie wyświetla się na ekranie