I Oracle er NLS_INITCAP()
funktion returnerer sit argument med det første bogstav i hvert ord med store bogstaver og alle andre bogstaver med små bogstaver.
Den faktiske brug af store bogstaver vil dog afhænge af den sammenstilling, der anvendes. Det kan f.eks. resultere i, at mere end det første bogstav skrives med stort.
Det ligner INITCAP()
funktion, bortset fra at den accepterer et andet argument, der giver dig mulighed for at angive sorteringen. Samlingen håndterer særlige sproglige krav til sagskonverteringer.
Syntaks
Syntaksen ser sådan ud:
NLS_INITCAP(char [, 'nlsparam' ])
Hvor både char
og 'nlsparam'
kan være enhver af datatyperne CHAR
, VARCHAR2
, NCHAR
eller NVARCHAR2
.
'nlsparam'
argument kan have følgende form:
'NLS_SORT = sort'
Hvor sort
er en navngivet kollation.
Hvis du udelader dette argument, bruges den bestemte sammenstilling af funktionen.
Eksempel
Her er et simpelt eksempel til at demonstrere:
SELECT NLS_INITCAP('the lake')
FROM DUAL;
Resultat:
NLS_INITCAP('THELAKE') _________________________ The Lake
Angiv en sortering
Her er et eksempel, der viser, hvordan angivelse af en sortering kan ændre resultaterne:
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
Bemærk, at i den anden kolonne, de første to bogstaver i IJsselmeer skrives med stort, mens den første kolonne kun sætter det første bogstav med stort.
På hollandsk, ij betragtes som ét bogstav, og derfor skrives begge tegn med stort, når de forekommer i begyndelsen af en sætning eller et egennavn.
Bemærk, at NLS_SORT
tilsidesætter sammenstillingen af det første argument kun på tidspunktet for udførelsen. Derfor returnerer følgende sætning sammenstillingen af det første argument, ikke det andet:
SELECT
COLLATION(NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDutch')) AS Collation
FROM DUAL;
Resultat:
COLLATION _________________ USING_NLS_COMP
Emnet for sammenstillinger kan være ret komplekst. Se appendiks C i Oracle Database Globalization Support Guide for reglerne for sorteringsbestemmelse og regler for udledning af sortering for denne funktion.
Hvad hvis jeg består alle STORE bogstaver?
Hvis du sender alle store bogstaver, ændres resultatet ikke:
SELECT
NLS_INITCAP('HET IJSSELMEER', 'NLS_SORT = XDutch') AS Result
FROM DUAL;
Resultat:
RESULT _________________ Het IJsselmeer
Nul-værdier
Hvis et argument er null
, resultatet er 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 returnerer SQLcl og SQL*Plus et tomt mellemrum, når null
opstår som et resultat af en SQL SELECT
udmelding.
Du kan dog bruge SET NULL
for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null
skal returneres.
Forkert antal argumenter
Kalder NLS_INITCAP()
uden at sende nogen argumenter returnerer en fejl:
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:
Og at sende det forkerte antal argumenter resulterer i en fejl:
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: