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