Problema:
Suponha que você tenha uma tabela no SQL Server que contenha informações do cliente, como nome, sobrenome e endereço de e-mail em colunas separadas. Na aplicação, você deseja exibir o nome completo como nome e sobrenome. Normalmente, os desenvolvedores usam o sinal de mais (+) para concatenar strings, mas o SQL Server fornece as úteis funções de string CONCAT() e CONCAT_WS() para esse propósito.
Solução:
O SQL Server oferece vários métodos para concatenar dados. Uma abordagem comum é usar o símbolo de mais (+) como operador de concatenação. No entanto, esse método pode resultar em valores NULL se alguma das colunas concatenadas tiver valores NULL. Para lidar com valores NULL de forma eficiente, o SQL Server fornece as funções CONCAT() e CONCAT_WS().
A função CONCAT() concatena várias strings, ignorando valores NULL. É necessário especificar o separador cada vez que você deseja usá-lo. Por exemplo:
SELECT CONCAT(AddressLine1, ' ', AddressLine2) AS [Endereço]
FROM [AdventureWorks2017].[Person].[Address]
A função CONCAT_WS(), introduzida no SQL Server 2017, é uma versão aprimorada do CONCAT(). Ela permite que você especifique um separador apenas uma vez e lida automaticamente com valores NULL. Por exemplo:
SELECT CONCAT_WS(',', AddressLine1, AddressLine2) AS [Endereço]
FROM [AdventureWorks2017].[Person].[Address]
Ao usar o CONCAT_WS(), você pode evitar valores NULL na string concatenada e simplificar seu código.
Comparação:
Aqui estão as principais diferenças entre as funções CONCAT() e CONCAT_WS():
- O CONCAT() requer a especificação do separador cada vez, enquanto o CONCAT_WS() requer apenas uma vez.
- O CONCAT() retorna NULL se alguma das colunas concatenadas tiver valores NULL, enquanto o CONCAT_WS() ignora valores NULL e processa os parâmetros restantes.
Conclusão:
Ao trabalhar com a concatenação de strings no SQL Server, é recomendado usar a função CONCAT_WS(). Ela simplifica o código ao lidar automaticamente com valores NULL e requer a especificação do separador apenas uma vez. Isso garante um processo de concatenação mais eficiente e confiável.
Referências:
Documentação do Microsoft SQL Server: CONCAT_WS()
Documentação do Microsoft SQL Server: CONCAT()