В Oracle, NLS_CHARSET_DECL_LEN()
функцията връща дължината на декларацията (в брой знаци) на NCHAR
колона.
Синтаксис
Синтаксисът е така:
NLS_CHARSET_DECL_LEN(byte_count, char_set_id)
Където byte_count
е ширината на колоната и char_set_id
е идентификационният номер на набора от знаци на колоната.
Пример
Ето един основен пример:
SELECT NLS_CHARSET_DECL_LEN(100, 1)
FROM DUAL;
Резултат:
100
Ето го с различен идентификатор на набор от знаци:
SELECT NLS_CHARSET_DECL_LEN(100, 2000)
FROM DUAL;
Резултат:
50
Вземете идентификатора на набора от символи
Можем да използваме NLS_CHARSET_ID()
функция за връщане на идентификатора на набора от символи за даден набор от знаци:
Пример:
SELECT NLS_CHARSET_DECL_LEN(
100,
NLS_CHARSET_ID('AL16UTF16')
)
FROM DUAL;
Резултат:
50
Нулев аргумент
Ако някой аргумент е null
, резултатът е null
:
SET NULL 'null';
SELECT
NLS_CHARSET_DECL_LEN(null, 1) AS r1,
NLS_CHARSET_DECL_LEN(100, null) AS r2
FROM DUAL;
Резултат:
R1 R2 _______ _______ null null
По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null
възниква в резултат на SQL SELECT
изявление.
Можете обаче да използвате SET NULL
за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null
трябва да бъдат върнати.
Неправилен брой аргументи
Извикването на функцията без предаване на аргументи води до грешка:
SELECT NLS_CHARSET_DECL_LEN()
FROM DUAL;
Резултат:
Error starting at line : 1 in command - SELECT NLS_CHARSET_DECL_LEN() 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 NLS_CHARSET_DECL_LEN(100, 1, 2)
FROM DUAL;
Резултат:
Error starting at line : 1 in command - SELECT NLS_CHARSET_DECL_LEN(100, 1, 2) 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: