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: