В Oracle, NLS_UPPER()
функцията връща аргумента си с всички букви с главни букви.
Той е подобен на UPPER()
функция, с изключение на това, че приема втори аргумент, който ви позволява да посочите съпоставянето. Съпоставянето обработва специални езикови изисквания за преобразуване на главни и главни букви.
Синтаксис
Синтаксисът е така:
NLS_UPPER(char [, 'nlsparam' ])
Където и двете char
и 'nlsparam'
може да бъде от всеки от типовете данни CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
или NCLOB
.
'nlsparam'
аргументът може да има следната форма:
'NLS_SORT = sort'
Където sort
е съпоставяне с име.
Ако пропуснете този аргумент, се използва определеното съпоставяне на функцията.
Пример
Ето един прост пример за демонстрация:
SELECT NLS_UPPER('coffee time') AS Result
FROM DUAL;
Резултат:
RESULT ______________ COFFEE TIME
Същото важи, когато аргументът използва смесен случай:
SELECT NLS_UPPER('Coffee Time') AS Result
FROM DUAL;
Резултат:
RESULT ______________ COFFEE TIME
И ако аргументът вече е с главни букви, тогава резултатът е същият като входа:
SELECT NLS_UPPER('COFFEE TIME') AS Result
FROM DUAL;
Резултат:
RESULT ______________ COFFEE TIME
Посочете колекция
Ето пример, който демонстрира как определянето на съпоставяне може да промени резултатите:
SELECT
NLS_UPPER('fasilə') AS r1,
NLS_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI') AS r2
FROM DUAL;
Резултат:
R1 R2 _________ _________ FASILƏ FASİLƏ
Забележете, че втората колона използва главни букви с точки I
символ, който се придържа към азербайджанската писмена система.
Имайте предвид, че NLS_SORT
отменя съпоставянето на първия аргумент само в момента на изпълнение. Следователно следният оператор връща съпоставянето на първия аргумент, а не на втория:
SELECT
COLLATION(NLS_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI')) AS Collation
FROM DUAL;
Резултат:
COLLATION _________________ USING_NLS_COMP
Темата за съпоставянето може да бъде доста сложна. Вижте Приложение C в Ръководството за поддръжка на глобализация на базата данни на Oracle за правилата за определяне на съпоставяне и правилата за извличане на съпоставяне за тази функция.
Нулеви стойности
Предаването на null
връща null
:
SELECT
NLS_UPPER(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
NLS_UPPER('fasilə', null) AS r2,
NLS_UPPER(null, null) AS r3
FROM DUAL;
Резултат:
R1 R2 R3 _______ _______ _______ null null null
По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null
възниква в резултат на SQL SELECT
изявление.
Можете обаче да използвате SET NULL
за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null
трябва да бъдат върнати.
Неправилен брой аргументи
Извикване на NLS_UPPER()
без подаване на аргументи връща грешка:
SELECT NLS_UPPER()
FROM DUAL;
Резултат:
Error starting at line : 1 in command - SELECT NLS_UPPER() 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_UPPER('coffee', 'NLS_SORT = XAZERBAIJANI', 'time')
FROM DUAL;
Резултат:
Error starting at line : 1 in command - SELECT NLS_UPPER('coffee', 'NLS_SORT = XAZERBAIJANI', 'time') FROM DUAL Error at Command Line : 1 Column : 55 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: