Concatenando strings (chars, varchar2, etc) ou clobs no Oracle

Concatenando strings (chars, varchar2, etc) ou clobs no Oracle

Overview

Neste post, vamos embarcar em uma jornada pelas peculiaridades da concatenação de strings no mundo dos bancos de dados, especificamente entre o SQL Server e o Oracle. Com um tom leve, mas informativo, mostraremos como as diferenças operacionais entre essas plataformas podem afetar algo tão simples quanto juntar palavras, e claro, como você pode sair vitorioso ao realizar essa tarefa no Oracle. Fique conosco e torne-se um mestre na arte de concatenar strings, otimizando suas operações de banco de dados com eficiência e precisão.

É conhecimento comum que bancos diferentes tem diferenças nas operações. A concatenação de strings não ficou fora dessa. A forma como este procedimento é feito no SQL Server não pode ser “migrada as-is” para o Oracle. Neste post, mostro como realizar a concatenação.

Para começar, no Oracle, o operador + é destinado a somar coisas. Então, se você tentar concatenar utilizando este valor, ele vai retornar a seguinte mensagem de erro:

SQL Error [932] [42000]: ORA-00932: tipos de dados inconsistentes: esperava CHAR obteve NUMBER
oracle.jdbc.OracleDatabaseException: ORA-00932: tipos de dados inconsistentes: esperava CHAR obteve NUMBER

Existem duas formas de concatermos string no Oracle, a primeira é essa:

select 'bacon' || ' ' || 'is' || ' ' || 'great!' from dual

Sim, o que você (normalmente) utiliza como um OR, aqui é um operador de concatenação.

A outra forma é utilizando a função concat:

SELECT CONCAT('bacon', ' is great!') FROM dual;

A desvantagem da função concat é que ela só permite dois argumentos, então com o || você tem mais controle e flexibilidade.

Ambas formas podem ser utilizadas para concatenar strings ou CLOBS. (Se for para misturar os dois datatypes, você vai ter que converter os dados primeiro).

Referência: Help do Oracle.