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: