Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonction NLS_UPPER() dans Oracle

Dans Oracle, le NLS_UPPER() la fonction renvoie son argument avec toutes les lettres en majuscules.

C'est similaire au UPPER() fonction, sauf qu'elle accepte un deuxième argument qui vous permet de spécifier le classement. Le classement gère les exigences linguistiques spéciales pour les conversions de casse.

Syntaxe

La syntaxe ressemble à ceci :

NLS_UPPER(char [, 'nlsparam' ])

Où les deux char et 'nlsparam' peut être de n'importe quel type de données CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB , ou NCLOB .

Le 'nlsparam' l'argument peut avoir la forme suivante :

'NLS_SORT = sort'

sort est une collation nommée.

Si vous omettez cet argument, le classement déterminé de la fonction est utilisé.

Exemple

Voici un exemple simple pour illustrer :

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

Résultat :

        RESULT 
______________ 
COFFEE TIME   

Il en va de même lorsque l'argument utilise une casse mixte :

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

Résultat :

        RESULT 
______________ 
COFFEE TIME   

Et si l'argument est déjà en majuscule, alors le résultat est le même que l'entrée :

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

Résultat :

        RESULT 
______________ 
COFFEE TIME   

Spécifier un classement

Voici un exemple qui montre comment la spécification d'un classement peut modifier les résultats :

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

Résultat :

       R1        R2 
_________ _________ 
FASILƏ    FASİLƏ   

Notez que la deuxième colonne utilise un I majuscule pointé caractère, qui adhère au système d'écriture azerbaïdjanais.

Notez que NLS_SORT remplace le classement du premier argument uniquement au moment de l'exécution. Par conséquent, l'instruction suivante renvoie le classement du premier argument, pas le second :

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

Résultat :

        COLLATION 
_________________ 
USING_NLS_COMP   

Le sujet des collations peut être assez complexe. Reportez-vous à l'annexe C du manuel Oracle Database Globalization Support Guide pour connaître les règles de détermination du classement et les règles de dérivation du classement pour cette fonction.

Valeurs nulles

Passer null renvoie null :

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

Résultat :

     R1      R2      R3 
_______ _______ _______ 
null    null    null   

Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois que null se produit à la suite d'un SQL SELECT déclaration.

Cependant, vous pouvez utiliser SET NULL pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null doit être retourné.

Nombre d'arguments incorrects

Appel de NLS_UPPER() sans passer d'argument renvoie une erreur :

SELECT NLS_UPPER()
FROM DUAL;

Résultat :

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:

Et passer trop d'arguments entraîne une erreur :

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

Résultat :

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: