sql >> Databáze >  >> RDS >> Oracle

Funkce NLS_UPPER() v Oracle

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:

  1. Používání klientských aplikací MySQL

  2. SQL Server v.Next:Výkon STRING_AGG().

  3. Jak získat měsíc z data v T-SQL

  4. Vlastní objednávka v Oracle SQL