Concatenando strings (chars, varchar2, etc) ou clobs no Oracle
![Concatenando strings (chars, varchar2, etc) ou clobs no Oracle](/imgs/featured_image_default.png)
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).