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

Fonction CONCAT() dans Oracle

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 ) renvoie NCLOB
  • CONCAT (NCLOB , NCHAR ) renvoie NCLOB
  • CONCAT (NCLOB , CHAR ) renvoie NCLOB
  • CONCAT (NCHAR , CLOB ) renvoie NCLOB