Dans Oracle, le NLS_INITCAP()
La fonction renvoie son argument avec la première lettre de chaque mot en majuscule et toutes les autres lettres en minuscule.
Cependant, la capitalisation réelle dépendra de la collation utilisée. Par exemple, il pourrait en résulter que plus que la première lettre soit en majuscule.
C'est similaire à INITCAP()
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_INITCAP(char [, 'nlsparam' ])
Où les deux char
et 'nlsparam'
peut être l'un des types de données CHAR
, VARCHAR2
, NCHAR
, ou NVARCHAR2
.
Le 'nlsparam'
l'argument peut avoir la forme suivante :
'NLS_SORT = sort'
Où 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_INITCAP('the lake')
FROM DUAL;
Résultat :
NLS_INITCAP('THELAKE') _________________________ The Lake
Spécifier un classement
Voici un exemple qui montre comment la spécification d'un classement peut modifier les résultats :
SELECT
NLS_INITCAP('het ijsselmeer') AS c1,
NLS_INITCAP('het ijsselmeer', 'NLS_SORT = XDutch') AS c2
FROM DUAL;
Résultat :
C1 C2 _________________ _________________ Het Ijsselmeer Het IJsselmeer
Notez que dans la deuxième colonne, les deux premières lettres de IJsselmeer sont en majuscules, alors que la première colonne ne met en majuscule que la première lettre.
En néerlandais, ij est considéré comme une seule lettre, et donc les deux caractères sont en majuscules lorsqu'ils apparaissent au début d'une phrase ou d'un nom propre.
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_INITCAP('het IJsselmeer', 'NLS_SORT = XDutch')) 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.
Et si je réussis toutes les lettres MAJUSCULES ?
Passer toutes les lettres majuscules ne change pas le résultat :
SELECT
NLS_INITCAP('HET IJSSELMEER', 'NLS_SORT = XDutch') AS Result
FROM DUAL;
Résultat :
RESULT _________________ Het IJsselmeer
Valeurs nulles
Si un argument est null
, le résultat est 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;
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_INITCAP()
sans passer d'argument renvoie une erreur :
SELECT NLS_INITCAP()
FROM DUAL;
Résultat :
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:
Et passer le mauvais nombre d'arguments entraîne une erreur :
SELECT NLS_INITCAP('het IJsselmeer', 'NLS_SORT = XDUTCH', 3)
FROM DUAL;
Résultat :
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: