V Oracle, NLS_UPPER()
funkce vrací svůj argument se všemi písmeny velkými.
Je to podobné jako UPPER()
funkce, kromě toho, že přijímá druhý argument, který vám umožňuje určit řazení. Porovnání řeší speciální lingvistické požadavky na převody velkých a malých písmen.
Syntaxe
Syntaxe vypadá takto:
NLS_UPPER(char [, 'nlsparam' ])
Kde oba char
a 'nlsparam'
může být libovolného datového typu CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
nebo NCLOB
.
'nlsparam'
argument může mít následující tvar:
'NLS_SORT = sort'
Kde sort
je pojmenovaná kolace.
Pokud tento argument vynecháte, použije se určené řazení funkce.
Příklad
Zde je jednoduchý příklad k demonstraci:
SELECT NLS_UPPER('coffee time') AS Result
FROM DUAL;
Výsledek:
RESULT ______________ COFFEE TIME
Totéž platí, když argument používá smíšená velká a malá písmena:
SELECT NLS_UPPER('Coffee Time') AS Result
FROM DUAL;
Výsledek:
RESULT ______________ COFFEE TIME
A pokud je argument již velkými písmeny, pak je výsledek stejný jako vstup:
SELECT NLS_UPPER('COFFEE TIME') AS Result
FROM DUAL;
Výsledek:
RESULT ______________ COFFEE TIME
Zadejte řazení
Zde je příklad, který ukazuje, jak může zadání řazení změnit výsledky:
SELECT
NLS_UPPER('fasilə') AS r1,
NLS_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI') AS r2
FROM DUAL;
Výsledek:
R1 R2 _________ _________ FASILƏ FASİLƏ
Všimněte si, že druhý sloupec používá velká písmena I
tečkovaná znak, který dodržuje ázerbájdžánský systém psaní.
Všimněte si, že NLS_SORT
přepíše řazení prvního argumentu pouze v době provádění. Proto následující příkaz vrátí řazení prvního argumentu, nikoli druhého:
SELECT
COLLATION(NLS_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI')) AS Collation
FROM DUAL;
Výsledek:
COLLATION _________________ USING_NLS_COMP
Předmět porovnávání může být poměrně složitý. Pravidla určování řazení a pravidla odvozování řazení pro tuto funkci naleznete v příloze C příručky Oracle Database Globalization Support Guide.
Nulové hodnoty
Předávání null
vrátí null
:
SELECT
NLS_UPPER(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
NLS_UPPER('fasilə', null) AS r2,
NLS_UPPER(null, null) AS r3
FROM DUAL;
Výsledek:
R1 R2 R3 _______ _______ _______ null null null
Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když null
dochází v důsledku SQL SELECT
prohlášení.
Můžete však použít SET NULL
určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null
by měl být vrácen.
Nesprávný počet argumentů
Volání NLS_UPPER()
bez předání jakýchkoli argumentů vrátí chybu:
SELECT NLS_UPPER()
FROM DUAL;
Výsledek:
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:
A předání příliš mnoha argumentů vede k chybě:
SELECT NLS_UPPER('coffee', 'NLS_SORT = XAZERBAIJANI', 'time')
FROM DUAL;
Výsledek:
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: