sql >> Database >  >> RDS >> Oracle

NLS_INITCAP() Functie in Oracle

In Oracle, de NLS_INITCAP() functie retourneert zijn argument met de eerste letter van elk woord in hoofdletters en alle andere letters in kleine letters.

De werkelijke hoofdlettergebruik is echter afhankelijk van de gebruikte sortering. Het kan er bijvoorbeeld toe leiden dat meer dan de eerste letter met een hoofdletter wordt geschreven.

Het is vergelijkbaar met de INITCAP() 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_INITCAP(char [, 'nlsparam' ])

Waar beide char en 'nlsparam' kan elk van de gegevenstypen zijn CHAR , VARCHAR2 , NCHAR , of NVARCHAR2 .

De 'nlsparam' argument kan de volgende vorm hebben:

'NLS_SORT = sort'

Waar sort is een benoemde sortering.

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

Voorbeeld

Hier is een eenvoudig voorbeeld om te demonstreren:

SELECT NLS_INITCAP('the lake')
FROM DUAL;

Resultaat:

   NLS_INITCAP('THELAKE') 
_________________________ 
The Lake                 

Geef een sortering op

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

SELECT 
    NLS_INITCAP('het ijsselmeer') AS c1,
    NLS_INITCAP('het ijsselmeer', 'NLS_SORT = XDutch') AS c2
FROM DUAL;

Resultaat:

               C1                C2 
_________________ _________________ 
Het Ijsselmeer    Het IJsselmeer    

Merk op dat in de tweede kolom de eerste twee letters van IJsselmeer worden met een hoofdletter geschreven, terwijl in de eerste kolom alleen de eerste letter een hoofdletter is.

In het Nederlands, ij wordt beschouwd als één letter, en beide karakters worden dus met een hoofdletter geschreven wanneer ze aan het begin van een zin of een eigennaam staan.

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_INITCAP('het IJsselmeer', 'NLS_SORT = XDutch')) 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.

Wat als ik alle HOOFDLETTERS doorloop?

Het doorgeven van alle hoofdletters verandert het resultaat niet:

SELECT 
    NLS_INITCAP('HET IJSSELMEER', 'NLS_SORT = XDutch') AS Result
FROM DUAL;

Resultaat:

           RESULT 
_________________ 
Het IJsselmeer    

Null-waarden

Als een argument null is , het resultaat is null :

SET NULL 'null';

SELECT 
    NLS_INITCAP('het IJsselmeer', null) AS r1,
    NLS_INITCAP(null, 'NLS_SORT = XDutch') AS r2,
    NLS_INITCAP(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_INITCAP() zonder het doorgeven van argumenten geeft een fout:

SELECT NLS_INITCAP()
FROM DUAL;

Resultaat:

Error starting at line : 1 in command -
SELECT NLS_INITCAP()
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 het verkeerde aantal argumenten resulteert in een fout:

SELECT NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDUTCH', 3)
FROM DUAL;

Resultaat:

Error starting at line : 1 in command -
SELECT NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDUTCH', 3)
FROM DUAL
Error at Command Line : 1 Column : 59
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*Cause:    
*Action:

  1. MySQL-query / uitvoeringsvolgorde van de clausule

  2. Hoe de identiteitskolomwaarde in de SQL Server-tabel opnieuw in te stellen - SQL Server / T-SQL-zelfstudiedeel 43

  3. ODP.NET Oracle.ManagedDataAcess willekeurige ORA-12570 fouten

  4. ORA-24247:netwerktoegang geweigerd door toegangscontrolelijst (ACL)