sql >> Base de Datos >  >> RDS >> Oracle

Función CONCAT() en Oracle

En Oracle, CONCAT() La función realiza una concatenación de cadenas en sus argumentos. Devuelve la cadena que resulta de concatenar sus argumentos.

La concatenación es la operación de unir múltiples cadenas de un extremo a otro.

Sintaxis

La sintaxis es así:

CONCAT(char1, char2)

Donde ambos argumentos pueden ser cualquiera de los tipos de datos CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB o NCLOB .

Ejemplo

Aquí hay un ejemplo simple para demostrarlo:

SELECT CONCAT('Ponzi', 'Invest')
FROM DUAL;

Resultado:

   CONCAT('PONZI','INVEST') 
___________________________ 
PonziInvest                

Valores nulos

Concatenar una cadena con null devuelve la cadena:

SET NULL 'null';

SELECT 
    CONCAT('Ponzi', null),
    CONCAT(null, 'Invest')
FROM DUAL;

Resultado:

   CONCAT('PONZI',NULL)    CONCAT(NULL,'INVEST') 
_______________________ ________________________ 
Ponzi                   Invest                   

Pero si ambos argumentos son null , el resultado es null :

SET NULL 'null';

SELECT CONCAT(null, null)
FROM DUAL;

Resultado:

   CONCAT(NULL,NULL) 
____________________ 
null                

De forma predeterminada, SQLcl y SQL*Plus devuelven un espacio en blanco cada vez que null ocurre como resultado de un SQL SELECT declaración.

Sin embargo, puede usar SET NULL para especificar una cadena diferente a devolver. Aquí especifiqué que la cadena null debe ser devuelto.

Recuento de argumentos incorrecto

Llamando a CONCAT() sin pasar ningún argumento devuelve un error:

SELECT CONCAT()
FROM DUAL;

Resultado:

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:

Y pasar el número incorrecto de argumentos da como resultado un error:

SELECT CONCAT('Gosh', 'Dang', 'Investments')
FROM DUAL;

Resultado:

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:

Conjunto de caracteres y tipo de datos

La cadena resultante está en el mismo conjunto de caracteres que el primer argumento, sin embargo, su tipo de datos depende de los tipos de datos de los argumentos.

Al concatenar dos tipos de datos diferentes, Oracle Database devuelve el tipo de datos que da como resultado una conversión sin pérdidas. Por lo tanto, si uno de los argumentos es un LOB, el valor devuelto es un LOB. Si uno de los argumentos es un tipo de datos nacional, el valor devuelto es un tipo de datos nacional.

Ejemplos:

  • CONCAT (CLOB , NCLOB ) devuelve NCLOB
  • CONCAT (NCLOB , NCHAR ) devuelve NCLOB
  • CONCAT (NCLOB , CHAR ) devuelve NCLOB
  • CONCAT (NCHAR , CLOB ) devuelve NCLOB