В Oracle Database, COLLATION()
функцията връща името на полученото съпоставяне за неговия аргумент.
Синтаксис
Синтаксисът е така:
COLLATION(expr)
Където expr
трябва да се изчисли до символен низ от тип CHAR
, VARCHAR2
, LONG
, NCHAR
или NVARCHAR2
.
Пример
Ето един основен пример:
SELECT COLLATION('Boat')
FROM DUAL;
Резултат:
USING_NLS_COMP
Пример с COLLATE
Клауза
Ето какво се случва, когато използваме COLLATE
клауза, за да посочите изрично съпоставянето:
SELECT COLLATION('Boat' COLLATE LATIN_AI)
FROM DUAL;
Резултат:
LATIN_AI
Внимание при използване на NLS_SORT
COLLATION()
функцията връща само обвързаното с данни съпоставяне, а не динамичното съпоставяне, зададено от NLS_SORT
параметър.
Пример:
SELECT COLLATION('Boat' COLLATE USING_NLS_SORT)
FROM DUAL;
Резултат:
USING_NLS_SORT
Можете да използвате SYS_CONTEXT()
функция за връщане на стойността на NLS_SORT
параметър:
SELECT SYS_CONTEXT('USERENV','NLS_SORT')
FROM DUAL;
Резултат:
BINARY
Въпреки това, всеки суфикс като _CI
, _AI
и _CS
се връща:
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;
Резултат:
_CI _CS _AI ____________________ ____________________ ____________________ USING_NLS_SORT_CI USING_NLS_SORT_CS USING_NLS_SORT_AI
Нулев аргумент
Съпоставянето се връща дори при предаване на null
:
SELECT COLLATION(null)
FROM DUAL;
Резултат:
USING_NLS_COMP
Неправилен брой аргументи
Извикването на функцията без предаване на аргументи води до грешка:
SELECT COLLATION()
FROM DUAL;
Резултат:
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:
И предаването на твърде много аргументи също води до грешка:
SELECT COLLATION('Boat', 'Dang')
FROM DUAL;
Резултат:
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: