sql >> Database teknologi >  >> RDS >> Oracle

NLS_UPPER() Funktion i Oracle

I Oracle er NLS_UPPER() funktion returnerer sit argument med alle bogstaver med store bogstaver.

Det ligner UPPER() funktion, bortset fra at den accepterer et andet argument, der giver dig mulighed for at angive sorteringen. Samlingen håndterer særlige sproglige krav til sagskonverteringer.

Syntaks

Syntaksen ser sådan ud:

NLS_UPPER(char [, 'nlsparam' ])

Hvor både char og 'nlsparam' kan være af enhver af datatyperne CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB eller NCLOB .

'nlsparam' argument kan have følgende form:

'NLS_SORT = sort'

Hvor sort er en navngivet kollation.

Hvis du udelader dette argument, bruges den bestemte sammenstilling af funktionen.

Eksempel

Her er et simpelt eksempel til at demonstrere:

SELECT NLS_UPPER('coffee time') AS Result
FROM DUAL;

Resultat:

        RESULT 
______________ 
COFFEE TIME   

Det samme gælder, når argumentet bruger blandet store og små bogstaver:

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

Resultat:

        RESULT 
______________ 
COFFEE TIME   

Og hvis argumentet allerede er med store bogstaver, så er resultatet det samme som inputtet:

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

Resultat:

        RESULT 
______________ 
COFFEE TIME   

Angiv en sortering

Her er et eksempel, der viser, hvordan angivelse af en sortering kan ændre resultaterne:

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

Resultat:

       R1        R2 
_________ _________ 
FASILƏ    FASİLƏ   

Bemærk, at den anden kolonne bruger et prikket stort I karakter, som overholder det aserbajdsjanske skriftsystem.

Bemærk, at NLS_SORT tilsidesætter sammenstillingen af ​​det første argument kun på tidspunktet for udførelsen. Derfor returnerer følgende sætning sammenstillingen af ​​det første argument, ikke det andet:

SELECT
    COLLATION(NLS_UPPER('fasilə', 'NLS_SORT = XAZERBAIJANI')) AS Collation
FROM DUAL;

Resultat:

        COLLATION 
_________________ 
USING_NLS_COMP   

Emnet for sammenstillinger kan være ret komplekst. Se appendiks C i Oracle Database Globalization Support Guide for reglerne for sorteringsbestemmelse og regler for udledning af sortering for denne funktion.

Nul-værdier

Sender null returnerer null :

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

Resultat:

     R1      R2      R3 
_______ _______ _______ 
null    null    null   

Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når null opstår som et resultat af en SQL SELECT udmelding.

Du kan dog bruge SET NULL for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null skal returneres.

Forkert antal argumenter

Kalder NLS_UPPER() uden at sende nogen argumenter returnerer en fejl:

SELECT NLS_UPPER()
FROM DUAL;

Resultat:

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:

Og at sende for mange argumenter resulterer i en fejl:

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

Resultat:

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. Importer data fra Excel-regneark eller CVS til MySQL

  2. Sådan opretter du en primær nøgle i SQL

  3. EM12c tillader nu DB12c til Repos

  4. SQL:Opdater en række og returner en kolonneværdi med 1 forespørgsel