Dans Oracle, le CONCAT()
La fonction effectue une concaténation de chaînes sur ses arguments. Elle renvoie la chaîne résultant de la concaténation de ses arguments.
La concaténation est l'opération consistant à joindre plusieurs chaînes de bout en bout.
Syntaxe
La syntaxe ressemble à ceci :
CONCAT(char1, char2)
Où les deux arguments peuvent être n'importe lequel des types de données CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
, ou NCLOB
.
Exemple
Voici un exemple simple pour illustrer :
SELECT CONCAT('Ponzi', 'Invest')
FROM DUAL;
Résultat :
CONCAT('PONZI','INVEST') ___________________________ PonziInvest
Valeurs nulles
Concaténer une chaîne avec null
renvoie la chaîne :
SET NULL 'null';
SELECT
CONCAT('Ponzi', null),
CONCAT(null, 'Invest')
FROM DUAL;
Résultat :
CONCAT('PONZI',NULL) CONCAT(NULL,'INVEST') _______________________ ________________________ Ponzi Invest
Mais si les deux arguments sont null
, le résultat est null
:
SET NULL 'null';
SELECT CONCAT(null, null)
FROM DUAL;
Résultat :
CONCAT(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 CONCAT()
sans passer d'argument renvoie une erreur :
SELECT CONCAT()
FROM DUAL;
Résultat :
Error starting at line : 1 in command - SELECT CONCAT() 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 CONCAT('Gosh', 'Dang', 'Investments')
FROM DUAL;
Résultat :
Error starting at line : 1 in command - SELECT CONCAT('Gosh', 'Dang', 'Investments') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action:
Jeu de caractères et type de données
La chaîne résultante est dans le même jeu de caractères que le premier argument, mais son type de données dépend des types de données des arguments.
Lors de la concaténation de deux types de données différents, Oracle Database renvoie le type de données qui entraîne une conversion sans perte. Par conséquent, si l'un des arguments est un LOB, la valeur renvoyée est un LOB. Si l'un des arguments est un type de données national, la valeur renvoyée est un type de données national.
Exemples :
CONCAT
(CLOB
,NCLOB
) renvoieNCLOB
CONCAT
(NCLOB
,NCHAR
) renvoieNCLOB
CONCAT
(NCLOB
,CHAR
) renvoieNCLOB
CONCAT
(NCHAR
,CLOB
) renvoieNCLOB