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

NLS_UPPER()-Funktion in Oracle

In Oracle der NLS_UPPER() Die Funktion gibt ihr Argument mit allen Buchstaben in Großbuchstaben zurück.

Es ähnelt dem UPPER() -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_UPPER(char [, 'nlsparam' ])

Wobei beide char und 'nlsparam' kann einen der Datentypen CHAR haben , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB , oder NCLOB .

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_UPPER('coffee time') AS Result
FROM DUAL;

Ergebnis:

        RESULT 
______________ 
COFFEE TIME   

Dasselbe gilt, wenn das Argument gemischte Groß-/Kleinschreibung verwendet:

SELECT NLS_UPPER('Coffee Time') AS Result
FROM DUAL;

Ergebnis:

        RESULT 
______________ 
COFFEE TIME   

Und wenn das Argument bereits in Großbuchstaben geschrieben ist, ist das Ergebnis dasselbe wie die Eingabe:

SELECT NLS_UPPER('COFFEE TIME') AS Result
FROM DUAL;

Ergebnis:

        RESULT 
______________ 
COFFEE TIME   

Geben Sie eine Sortierung an

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

SELECT 
    NLS_UPPER('fasilə') AS r1,
    NLS_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI') AS r2
FROM DUAL;

Ergebnis:

       R1        R2 
_________ _________ 
FASILƏ    FASİLƏ   

Beachten Sie, dass die zweite Spalte einen gepunkteten Großbuchstaben I verwendet Zeichen, das dem aserbaidschanischen Schriftsystem entspricht.

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_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI')) 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.

Nullwerte

Übergabe von null gibt null zurück :

SELECT
    NLS_UPPER(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
    NLS_UPPER('fasilə', null) AS r2,
    NLS_UPPER(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_UPPER() ohne Übergabe von Argumenten gibt einen Fehler zurück:

SELECT NLS_UPPER()
FROM DUAL;

Ergebnis:

Error starting at line : 1 in command -
SELECT NLS_UPPER()
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 zu vieler Argumente führt zu einem Fehler:

SELECT NLS_UPPER('coffee', 'NLS_SORT = XAZERBAIJANI', 'time')
FROM DUAL;

Ergebnis:

Error starting at line : 1 in command -
SELECT NLS_UPPER('coffee', 'NLS_SORT = XAZERBAIJANI', 'time')
FROM DUAL
Error at Command Line : 1 Column : 55
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*Cause:    
*Action: