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

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

В Oracle Database, NLS_COLLATION_NAME() функцията връща името на дадено съпоставяне въз основа на неговия идентификатор. Вие предавате идентификатора за съпоставяне при извикване на функцията и тя връща името на съпоставянето.

Синтаксис

Синтаксисът е така:

NLS_COLLATION_NAME(expr [, flag ])

Където expr е идентификаторът за съпоставяне от тип NUMBER .

flag Аргументът е незадължителен аргумент, който се прилага само за съпоставяния на Unicode Collation Algorithm (UCA). Той определя дали функцията трябва да върне кратката или дългата форма на името на съпоставянето.

flag аргументът може да бъде един от следните:

Флаг Описание
'S' или 's' Връща кратката форма на името на съпоставянето.
'L' или 'l' Връща дългата форма на името на съпоставянето.

Стойността по подразбиране за този флаг е 'L' .

Пример

Ето един основен пример:

SELECT NLS_COLLATION_NAME(70)
FROM DUAL;

Резултат:

XAZERBAIJANI

Ето още няколко примера:

SELECT 
    NLS_COLLATION_NAME(4112) AS "1",
    NLS_COLLATION_NAME(4116) AS "2"
FROM DUAL;

Резултат:

          1             2 
___________ _____________ 
FRENCH_M    CANADIAN_M   

Флаг за дълга/къса форма

Както споменахме, можем да предадем незадължителен флаг, за да определим дали да върне кратката или дългата форма на името на съпоставянето.

SELECT 
    NLS_COLLATION_NAME(208920, 'L') AS "Long",
    NLS_COLLATION_NAME(208920, 'S') AS "Short"
FROM DUAL;

Резултат:

                                      Long           Short 
__________________________________________ _______________ 
UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN    UCA0620_THAI   

Стойността по подразбиране за този флаг е 'L' . Така че, ако пропуснем флага, се връща дългата форма:

SELECT 
    NLS_COLLATION_NAME(208920) AS "Default"
FROM DUAL;

Резултат:

                                   Default 
__________________________________________ 
UCA0620_THAI_S4_VS_BN_NY_EN_FN_HN_DN_MN   

Този флаг обаче важи само за съпоставяния с алгоритъм за сравняване на Unicode (UCA).

Ако приложим флага към съпоставяне, което не е UCA, не виждаме разлика:

SELECT 
    NLS_COLLATION_NAME(4112, 'L') AS "1",
    NLS_COLLATION_NAME(4112, 'S') AS "2"
FROM DUAL;

Резултат:

          1           2 
___________ ___________ 
FRENCH_M    FRENCH_M   

Невалидно съпоставяне

Предаването на невалидно име за съпоставяне води до null :

SET NULL 'null';
SELECT NLS_COLLATION_NAME(4113)
FROM DUAL;

Резултат:

null

По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null възниква в резултат на SQL SELECT изявление.

Можете обаче да използвате SET NULL за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null трябва да бъдат върнати.

Нулев аргумент

Предаването на null връща null :

SET NULL 'null';
SELECT NLS_COLLATION_NAME(null)
FROM DUAL;

Резултат:

null

Неправилен брой аргументи

Извикването на функцията без предаване на аргументи води до грешка:

SELECT NLS_COLLATION_NAME()
FROM DUAL;

Резултат:

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:

И предаването на твърде много аргументи също води до грешка:

SELECT NLS_COLLATION_NAME(4112, 'S', 'L')
FROM DUAL;

Резултат:

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. Как да инсталирам пакета ROracle на Windows 7?

  2. Какво означава следната грешка на Oracle:невалиден индекс на колона

  3. Как да актуализирате Oracle Clob с помощта на JDBC

  4. Функция RPAD() в Oracle

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