Oracle
 sql >> Datenbank >  >> RDS >> Oracle

NLS_INITCAP()-Funktion in Oracle

In Oracle das NLS_INITCAP() Die Funktion gibt ihr Argument mit dem ersten Buchstaben jedes Wortes in Großbuchstaben und allen anderen Buchstaben in Kleinbuchstaben zurück.

Die tatsächliche Großschreibung hängt jedoch von der verwendeten Sortierung ab. Beispielsweise könnte dies dazu führen, dass mehr als der erste Buchstabe großgeschrieben wird.

Es ähnelt dem INITCAP() -Funktion, außer dass sie ein zweites Argument akzeptiert, mit dem Sie die Sortierung angeben können. Die Sortierung behandelt spezielle sprachliche Anforderungen für Fallumwandlungen.

Syntax

Die Syntax lautet wie folgt:

NLS_INITCAP(char [, 'nlsparam' ])

Wobei beide char und 'nlsparam' kann jeder der Datentypen CHAR sein , VARCHAR2 , NCHAR , oder NVARCHAR2 .

Der 'nlsparam' Argument kann die folgende Form haben:

'NLS_SORT = sort'

Wobei sort ist eine benannte Sortierung.

Wenn Sie dieses Argument weglassen, wird die ermittelte Sortierung der Funktion verwendet.

Beispiel

Hier ist ein einfaches Beispiel zur Veranschaulichung:

SELECT NLS_INITCAP('the lake')
FROM DUAL;

Ergebnis:

   NLS_INITCAP('THELAKE') 
_________________________ 
The Lake                 

Geben Sie eine Sortierung an

Hier ist ein Beispiel, das zeigt, wie die Angabe einer Sortierung die Ergebnisse verändern kann:

SELECT 
    NLS_INITCAP('het ijsselmeer') AS c1,
    NLS_INITCAP('het ijsselmeer', 'NLS_SORT = XDutch') AS c2
FROM DUAL;

Ergebnis:

               C1                C2 
_________________ _________________ 
Het Ijsselmeer    Het IJsselmeer    

Beachten Sie, dass in der zweiten Spalte die ersten beiden Buchstaben von IJsselmeer stehen werden groß geschrieben, während in der ersten Spalte nur der erste Buchstabe groß geschrieben wird.

Auf Niederländisch ij wird als ein Buchstabe betrachtet, daher werden beide Zeichen groß geschrieben, wenn sie am Anfang eines Satzes oder eines Eigennamens stehen.

Beachten Sie, dass NLS_SORT überschreibt die Sortierung des ersten Arguments nur zum Zeitpunkt der Ausführung. Daher gibt die folgende Anweisung die Sortierung des ersten Arguments zurück, nicht des zweiten:

SELECT
    COLLATION(NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDutch')) AS Collation
FROM DUAL;

Ergebnis:

        COLLATION 
_________________ 
USING_NLS_COMP   

Das Thema Collations kann recht komplex sein. Siehe Anhang C im Oracle Database Globalization Support Guide für die Sortierungsbestimmungsregeln und Sortierungsableitungsregeln für diese Funktion.

Was ist, wenn ich nur GROSSBUCHSTABEN übergebe?

Wenn Sie nur Großbuchstaben übergeben, ändert sich das Ergebnis nicht:

SELECT 
    NLS_INITCAP('HET IJSSELMEER', 'NLS_SORT = XDutch') AS Result
FROM DUAL;

Ergebnis:

           RESULT 
_________________ 
Het IJsselmeer    

Nullwerte

Wenn irgendein Argument null ist , ist das Ergebnis 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;

Ergebnis:

     R1      R2      R3 
_______ _______ _______ 
null    null    null    

Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn null tritt als Ergebnis eines SQL SELECT auf Erklärung.

Sie können jedoch SET NULL verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null zurückgegeben werden soll.

Falsche Argumentanzahl

Aufruf von NLS_INITCAP() ohne Übergabe von Argumenten gibt einen Fehler zurück:

SELECT NLS_INITCAP()
FROM DUAL;

Ergebnis:

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:

Und das Übergeben der falschen Anzahl von Argumenten führt zu einem Fehler:

SELECT NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDUTCH', 3)
FROM DUAL;

Ergebnis:

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: