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