W Oracle NLS_UPPER()
funkcja zwraca swój argument ze wszystkimi literami pisanymi wielkimi literami.
Jest podobny do UPPER()
funkcji, z tym wyjątkiem, że przyjmuje drugi argument, który pozwala określić sortowanie. Sortowanie obsługuje specjalne wymagania językowe dotyczące konwersji przypadków.
Składnia
Składnia wygląda tak:
NLS_UPPER(char [, 'nlsparam' ])
Gdzie oba char
i 'nlsparam'
może być dowolnego typu danych CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
lub NCLOB
.
'nlsparam'
argument może mieć następującą postać:
'NLS_SORT = sort'
Gdzie sort
to nazwane zestawienie.
Jeśli pominiesz ten argument, używane jest określone sortowanie funkcji.
Przykład
Oto prosty przykład do zademonstrowania:
SELECT NLS_UPPER('coffee time') AS Result
FROM DUAL;
Wynik:
RESULT ______________ COFFEE TIME
To samo dotyczy przypadku, gdy w argumencie zastosowano wielkość liter:
SELECT NLS_UPPER('Coffee Time') AS Result
FROM DUAL;
Wynik:
RESULT ______________ COFFEE TIME
A jeśli argument jest już pisany wielkimi literami, wynik jest taki sam jak dane wejściowe:
SELECT NLS_UPPER('COFFEE TIME') AS Result
FROM DUAL;
Wynik:
RESULT ______________ COFFEE TIME
Określ sortowanie
Oto przykład, który pokazuje, jak określenie sortowania może zmienić wyniki:
SELECT
NLS_UPPER('fasilə') AS r1,
NLS_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI') AS r2
FROM DUAL;
Wynik:
R1 R2 _________ _________ FASILƏ FASİLƏ
Zauważ, że w drugiej kolumnie użyto kropkowanej wielkiej litery I
charakter, który jest zgodny z systemem pisma Azerbejdżanu.
Zwróć uwagę, że NLS_SORT
przesłania sortowanie pierwszego argumentu tylko w momencie wykonania. Dlatego następująca instrukcja zwraca sortowanie pierwszego argumentu, a nie drugiego:
SELECT
COLLATION(NLS_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI')) AS Collation
FROM DUAL;
Wynik:
COLLATION _________________ USING_NLS_COMP
Temat zestawień może być dość złożony. Zobacz Dodatek C w przewodniku Oracle Database Globalization Support Guide, aby zapoznać się z regułami określania sortowania i regułami wyprowadzania sortowania dla tej funkcji.
Wartości puste
Przekazywanie null
zwraca null
:
SELECT
NLS_UPPER(null, 'NLS_SORT = XAZERBAIJANI') AS r1,
NLS_UPPER('fasilə', null) AS r2,
NLS_UPPER(null, null) AS r3
FROM DUAL;
Wynik:
R1 R2 R3 _______ _______ _______ null null null
Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null
występuje w wyniku polecenia SQL SELECT
oświadczenie.
Możesz jednak użyć SET NULL
aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null
należy zwrócić.
Nieprawidłowa liczba argumentów
Wywołanie NLS_UPPER()
bez przekazywania żadnych argumentów zwraca błąd:
SELECT NLS_UPPER()
FROM DUAL;
Wynik:
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:
A przekazanie zbyt wielu argumentów skutkuje błędem:
SELECT NLS_UPPER('coffee', 'NLS_SORT = XAZERBAIJANI', 'time')
FROM DUAL;
Wynik:
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: