sql >> Databasteknik >  >> RDS >> Oracle

NLS_INITCAP() Funktion i Oracle

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:

  1. MySQL dynamisk pivottabell

  2. Genererar en serie datum

  3. Så här klusterar du dina ProxySQL-lastbalanserare

  4. Hur man skapar en MySQL-installation för lokal testning