Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Funkcja NLS_UPPER() w Oracle

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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja ACOS() w Oracle

  2. AUTONOMICZNA_TRANSAKCJA

  3. Funkcja NLS_UPPER() w Oracle

  4. Dostrajanie SQL

  5. Jak mogę utworzyć kopię tabeli Oracle bez kopiowania danych?