sql >> Database teknologi >  >> RDS >> Oracle

NLS_INITCAP() Funktion i Oracle

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:

  1. Den bedste måde at makulere XML-data i SQL Server-databasekolonner

  2. Sådan importeres en Heroku PG-dump til lokal maskine

  3. Sådan rulles patchen tilbage efter mislykket cutover-fase i R12.2

  4. Forstå lagringsstørrelser for MySQL TEXT-datatyper