I Oracle, NLS_INITCAP()
funktion returnerar sitt argument med den första bokstaven i varje ord med versaler och alla andra bokstäver med gemener.
Den faktiska användningen av stora bokstäver beror dock på vilken sortering som används. Det kan till exempel leda till att mer än den första bokstaven skrivs med versaler.
Det liknar INITCAP()
funktion, förutom att den accepterar ett andra argument som låter dig specificera sorteringen. Samlingen hanterar speciella språkliga krav för ärendekonverteringar.
Syntax
Syntaxen ser ut så här:
NLS_INITCAP(char [, 'nlsparam' ])
Där både char
och 'nlsparam'
kan vara vilken som helst av datatyperna CHAR
, VARCHAR2
, NCHAR
, eller NVARCHAR2
.
'nlsparam'
argument kan ha följande form:
'NLS_SORT = sort'
Där sort
är en namngiven kollation.
Om du utelämnar det här argumentet används den bestämda sorteringen av funktionen.
Exempel
Här är ett enkelt exempel att visa:
SELECT NLS_INITCAP('the lake')
FROM DUAL;
Resultat:
NLS_INITCAP('THELAKE') _________________________ The Lake
Ange en sortering
Här är ett exempel som visar hur angivande av en sortering kan ändra resultaten:
SELECT
NLS_INITCAP('het ijsselmeer') AS c1,
NLS_INITCAP('het ijsselmeer', 'NLS_SORT = XDutch') AS c2
FROM DUAL;
Resultat:
C1 C2 _________________ _________________ Het Ijsselmeer Het IJsselmeer
Lägg märke till att i den andra kolumnen, de två första bokstäverna i IJsselmeer versaler, medan den första kolumnen bara sätter den första bokstaven med stor bokstav.
På holländska, ij betraktas som en bokstav, så båda tecknen är versaler när de förekommer i början av en mening eller ett egennamn.
Observera att NLS_SORT
åsidosätter sammanställningen av det första argumentet endast vid tidpunkten för exekvering. Därför returnerar följande sats sammanställningen av det första argumentet, inte det andra:
SELECT
COLLATION(NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDutch')) AS Collation
FROM DUAL;
Resultat:
COLLATION _________________ USING_NLS_COMP
Ämnet för sammanställningar kan vara ganska komplext. Se bilaga C i Oracle Database Globalization Support Guide för regler för bestämning av sortering och regler för sorteringshärledning för denna funktion.
Vad händer om jag klarar alla STORA bokstäver?
Att skicka alla stora bokstäver ändrar inte resultatet:
SELECT
NLS_INITCAP('HET IJSSELMEER', 'NLS_SORT = XDutch') AS Result
FROM DUAL;
Resultat:
RESULT _________________ Het IJsselmeer
Nullvärden
Om något argument är null
, resultatet är 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;
Resultat:
R1 R2 R3 _______ _______ _______ null null null
Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när null
uppstår som ett resultat av en SQL SELECT
påstående.
Du kan dock använda SET NULL
för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null
bör returneras.
Inkorrekt antal argument
Anropar NLS_INITCAP()
utan att skicka några argument returnerar ett fel:
SELECT NLS_INITCAP()
FROM DUAL;
Resultat:
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:
Och att skicka fel antal argument resulterar i ett fel:
SELECT NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDUTCH', 3)
FROM DUAL;
Resultat:
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: