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

Funkcja NLS_INITCAP() w Oracle

W Oracle NLS_INITCAP() funkcja zwraca swój argument z pierwszą literą każdego słowa zapisaną wielką literą, a wszystkimi innymi literami małymi.

Jednak rzeczywista wielkość liter będzie zależeć od użytego sortowania. Na przykład może to spowodować, że więcej niż pierwsza litera będzie pisana wielką literą.

Jest podobny do INITCAP() 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_INITCAP(char [, 'nlsparam' ])

Gdzie oba char i 'nlsparam' może być dowolnym typem danych CHAR , VARCHAR2 , NCHAR lub NVARCHAR2 .

'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_INITCAP('the lake')
FROM DUAL;

Wynik:

   NLS_INITCAP('THELAKE') 
_________________________ 
The Lake                 

Określ sortowanie

Oto przykład, który pokazuje, jak określenie sortowania może zmienić wyniki:

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

Wynik:

               C1                C2 
_________________ _________________ 
Het Ijsselmeer    Het IJsselmeer    

Zauważ, że w drugiej kolumnie dwie pierwsze litery IJsselmeer są pisane wielką literą, podczas gdy pierwsza kolumna zawiera tylko pierwszą literę.

w języku niderlandzkim ij jest uważany za jedną literę, więc oba znaki są pisane wielką literą, gdy występują na początku zdania lub nazwy własnej.

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_INITCAP('het IJsselmeer', 'NLS_SORT = XDutch')) 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.

Co się stanie, jeśli przekażę wszystkie WIELKIE litery?

Przekazanie wszystkich wielkich liter nie zmienia wyniku:

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

Wynik:

           RESULT 
_________________ 
Het IJsselmeer    

Wartości puste

Jeśli jakikolwiek argument ma wartość null , wynik to 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;

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_INITCAP() bez przekazywania żadnych argumentów zwraca błąd:

SELECT NLS_INITCAP()
FROM DUAL;

Wynik:

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:

A przekazanie niewłaściwej liczby argumentów skutkuje błędem:

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

Wynik:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Powtarzające się wartości w kolumnie

  2. Funkcja POWER() w Oracle

  3. Oracle odpowiednik wskazówek dotyczących zapytań ROWLOCK, UPDLOCK, READPAST

  4. Jak skonfigurować DbContext do pracy z Oracle ODP.Net i EF CodeFirst?

  5. Jak usunąć wiele partycji interwałowych na podstawie daty?