Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Função CONCAT() no Oracle


No Oracle, o CONCAT() A função executa uma concatenação de strings em seus argumentos. Ele retorna a string que resulta da concatenação de seus argumentos.

A concatenação é a operação de unir várias strings de ponta a ponta.

Sintaxe


A sintaxe fica assim:
CONCAT(char1, char2)

Onde ambos os argumentos podem ser qualquer um dos tipos de dados CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB , ou NCLOB .

Exemplo


Aqui está um exemplo simples para demonstrar:
SELECT CONCAT('Ponzi', 'Invest')
FROM DUAL;

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

Valores nulos


Concatenando uma string com null retorna a string:
SET NULL 'null';

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

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

Mas se ambos os argumentos forem null , o resultado é null :
SET NULL 'null';

SELECT CONCAT(null, null)
FROM DUAL;

Resultado:
   CONCAT(NULL,NULL) 
____________________ 
null                

Por padrão, SQLcl e SQL*Plus retornam um espaço em branco sempre que null ocorre como resultado de um SQL SELECT demonstração.

No entanto, você pode usar SET NULL para especificar uma string diferente a ser retornada. Aqui eu especifiquei que a string null deve ser devolvido.

Contagem incorreta de argumentos


Chamando CONCAT() sem passar nenhum argumento retorna um erro:
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:

E passar o número errado de argumentos resulta em um erro:
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 e tipo de dados


A string resultante está no mesmo conjunto de caracteres que o primeiro argumento, porém seu tipo de dados depende dos tipos de dados dos argumentos.

Ao concatenar dois tipos de dados diferentes, o Oracle Database retorna o tipo de dados que resulta em uma conversão sem perdas. Portanto, se um dos argumentos for um LOB, o valor retornado será um LOB. Se um dos argumentos for um tipo de dados nacional, o valor retornado será um tipo de dados nacional.

Exemplos:
  • CONCAT (CLOB , NCLOB ) retorna NCLOB
  • CONCAT (NCLOB , NCHAR ) retorna NCLOB
  • CONCAT (NCLOB , CHAR ) retorna NCLOB
  • CONCAT (NCHAR , CLOB ) retorna NCLOB