Seguramente en más de una oportunidad hemos tenido que concatenar variable o campos en SQL Server.
Ahora bien, lo que nos sucede es que puede suceder que esos campos no sean del tipo varchar o bien tengan valores nulos lo cual nos puede complicar un poco el código TSQL a utilizar.
Supongamos que tenemos las siguientes variables que necesitamos concatenar
DECLARE @NRO INT = 10
DECLARE @STRING VARCHAR(255) = 'TRIGGERDB CONSULTING'
DECLARE @STRING2 VARCHAR(255) = NULL
DECLARE @FECHA DATE = GETDATE()
Si para concatenar estas variables intentamos ejecutar el siguiente código TSQL nos encontraremos con un error en la conversión de tipo de datos.
DECLARE @NRO INT = 10
DECLARE @STRING VARCHAR(255) = 'TRIGGERDB CONSULTING'
DECLARE @STRING2 VARCHAR(255) = NULL
DECLARE @FECHA DATE = GETDATE()
SELECT @NRO +'-' + @STRING + '-' + @STRING2 + '-' + @FECHA
Msg 206, Level 16, State 2, Line 8
Operand type clash: date is incompatible with int
Con lo cual si lo queremos hacer de forma correcta deberíamos ejecutar el siguiente código
SELECT CONVERT(VARCHAR(10),@NRO)
+ '-' + ISNULL(@STRING,'')
+ '-' + ISNULL(@STRING2,'')
+ '-' + CONVERT(VARCHAR(12),@FECHA)
Ahora bien, esto nos obliga a hacer conversiones y además tratar los posibles nulos ya que si no lo hacemos todo el resultado nos dará null
Usando CONCAT
La instrucción CONCAT() (la cual esta disponible desde SQL Server 2012 en adelante) nos permite concatenar distintos tipos de valores y llevarlos a un string de forma automática donde ademas si hay nulos no impactaran en el resultado.
Para escribir entonces de forma correcta nuestro código según el caso anterior y usando la instruccion CONCAT debemos hacer algo como esto:
DECLARE @NRO INT = 10
DECLARE @STRING VARCHAR(255) = 'TRIGGERDB CONSULTING'
DECLARE @STRING2 VARCHAR(255) = NULL
DECLARE @FECHA DATE = GETDATE()
SELECT CONCAT(@NRO,'-',@STRING,'-',@STRING2,'-',@FECHA)
10-TRIGGERDB CONSULTING–2019-03-11
(1 row affected)
Como se puede observar es mucho más limpia y simple de usar
Te dejo el siguiente video para que veas este mismo paso a paso
Te invito a seguirme en mi canal de youtube para que puedas seguir aprendiendo de SQL Server y plataformas de datos Microsoft