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

Funkce NLS_LOWER() v Oracle

V Oracle, NLS_LOWER() funkce vrací svůj argument se všemi písmeny malými.

Je to podobné jako LOWER() 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_LOWER(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_LOWER('HOMER SYMPTOM') AS Result
FROM DUAL;

Výsledek:

          RESULT 
________________ 
homer symptom   

Totéž platí, když argument používá smíšená velká a malá písmena:

SELECT NLS_LOWER('Homer Symptom') AS Result
FROM DUAL;

Výsledek:

          RESULT 
________________ 
homer symptom   

A pokud je argument již malá písmena, pak je výsledek stejný jako vstup:

SELECT NLS_LOWER('homer symptom') AS Result
FROM DUAL;

Výsledek:

          RESULT 
________________ 
homer symptom   

Zadejte řazení

Zde je příklad, který ukazuje, jak může zadání řazení změnit výsledky:

SELECT 
    NLS_LOWER('BALIQ') AS r1,
    NLS_LOWER('BALIQ', 'NLS_SORT = XAZERBAIJANI') AS r2
FROM DUAL;

Výsledek:

      R1       R2 
________ ________ 
baliq    balıq   

Všimněte si, že druhý sloupec používá malá písmena i bez teček 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_LOWER('BALIQ', '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_LOWER(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
    NLS_LOWER('BALIQ', null) AS r2,
    NLS_LOWER(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_LOWER() bez předání jakýchkoli argumentů vrátí chybu:

SELECT NLS_LOWER()
FROM DUAL;

Výsledek:

Error starting at line : 1 in command -
SELECT NLS_LOWER()
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_LOWER('Homer', 'NLS_SORT = XAZERBAIJANI', 'Symptom')
FROM DUAL;

Výsledek:

Error starting at line : 1 in command -
SELECT NLS_LOWER('Homer', 'NLS_SORT = XAZERBAIJANI', 'Symptom')
FROM DUAL
Error at Command Line : 1 Column : 54
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*Cause:    
*Action:

  1. SQLcl pro přenos dat z Oracle do PostgreSQL nebo YugabyteDB 🅾🐘🚀

  2. SQLite SUBSTRING() Vysvětleno

  3. Jak používat model strojového učení KNN s 2UDA – PostgreSQL a Orange (část 1)

  4. Preferovaný engine MySQL – MyISAM nebo InnoDB