Oracle
 sql >> база данни >  >> RDS >> Oracle

COLLATION() Функция в Oracle

В 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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Имена на колони за цитати на Oracle DB

  2. Управление на прозорци в Oracle D2k Forms

  3. Получаване на изход от dbms_output.get_lines с помощта на JDBC

  4. Фонови процеси

  5. Функция SQRT() в Oracle