sql >> Database >  >> RDS >> Oracle

NLS_UPPER() Functie in Oracle

In Oracle, de NLS_UPPER() functie retourneert zijn argument met alle letters in hoofdletters.

Het is vergelijkbaar met de UPPER() functie, behalve dat het een tweede argument accepteert waarmee u de sortering kunt specificeren. De sortering behandelt speciale taalkundige vereisten voor het omzetten van hoofdletters.

Syntaxis

De syntaxis gaat als volgt:

NLS_UPPER(char [, 'nlsparam' ])

Waar beide char en 'nlsparam' kan van elk gegevenstype zijn CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB , of NCLOB .

De 'nlsparam' argument kan de volgende vorm hebben:

'NLS_SORT = sort'

Waar sort is een benoemde collatie.

Als u dit argument weglaat, wordt de vastgestelde sortering van de functie gebruikt.

Voorbeeld

Hier is een eenvoudig voorbeeld om te demonstreren:

SELECT NLS_UPPER('coffee time') AS Result
FROM DUAL;

Resultaat:

        RESULT 
______________ 
COFFEE TIME   

Hetzelfde geldt wanneer het argument gemengde hoofdletters gebruikt:

SELECT NLS_UPPER('Coffee Time') AS Result
FROM DUAL;

Resultaat:

        RESULT 
______________ 
COFFEE TIME   

En als het argument al in hoofdletters is, dan is het resultaat hetzelfde als de invoer:

SELECT NLS_UPPER('COFFEE TIME') AS Result
FROM DUAL;

Resultaat:

        RESULT 
______________ 
COFFEE TIME   

Geef een sortering op

Hier is een voorbeeld dat laat zien hoe het specificeren van een sortering de resultaten kan veranderen:

SELECT 
    NLS_UPPER('fasilə') AS r1,
    NLS_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI') AS r2
FROM DUAL;

Resultaat:

       R1        R2 
_________ _________ 
FASILƏ    FASİLƏ   

Merk op dat de tweede kolom een ​​gestippelde hoofdletter gebruikt I karakter, dat voldoet aan het Azerbeidzjaanse schriftsysteem.

Merk op dat NLS_SORT overschrijft de sortering van het eerste argument alleen op het moment van uitvoering. Daarom retourneert de volgende instructie de sortering van het eerste argument, niet het tweede:

SELECT
    COLLATION(NLS_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI')) AS Collation
FROM DUAL;

Resultaat:

        COLLATION 
_________________ 
USING_NLS_COMP   

Het onderwerp van sorteringen kan behoorlijk complex zijn. Zie bijlage C in de Oracle Database Globalization Support Guide voor de regels voor het bepalen van sorteringen en regels voor het afleiden van sorteringen voor deze functie.

Null-waarden

Doorgeven van null retourneert null :

SELECT
    NLS_UPPER(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
    NLS_UPPER('fasilə', null) AS r2,
    NLS_UPPER(null, null) AS r3
FROM DUAL;

Resultaat:

     R1      R2      R3 
_______ _______ _______ 
null    null    null   

Standaard retourneren SQLcl en SQL*Plus een spatie wanneer null treedt op als resultaat van een SQL SELECT uitspraak.

U kunt echter SET NULL . gebruiken om een ​​andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null moet worden geretourneerd.

Onjuist aantal argumenten

Aanroepen van NLS_UPPER() zonder het doorgeven van argumenten geeft een fout:

SELECT NLS_UPPER()
FROM DUAL;

Resultaat:

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:

En het doorgeven van te veel argumenten resulteert in een fout:

SELECT NLS_UPPER('coffee', 'NLS_SORT = XAZERBAIJANI', 'time')
FROM DUAL;

Resultaat:

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. Oracle Date datatype, getransformeerd naar 'YYYY-MM-DD HH24:MI:SS TMZ' via SQL

  2. Hoe te SELECTEREN * maar zonder Kolomnamen moeten uniek zijn in elke weergave

  3. Grondbeginselen van tabeluitdrukkingen, deel 2 – Afgeleide tabellen, logische overwegingen

  4. Stappen om MySQL8 op CentOS te installeren