¿Cómo uso la función CONCAT en SQL Server 2008 R2?

Estaba buscando una función CONCAT en SQL Server 2008 R2. Encontré el enlace para esta función . Pero cuando uso esta función, aparece el siguiente error:

Msg 195, nivel 15, estado 10, línea 7
‘CONCAT’ no es un nombre de función incorporado reconocido.

¿ CONCAT función CONCAT existe en SQL Server 2008 R2?

Si no, ¿cómo concatenar cadenas en SQL Server 2008 R2?

CONCAT es nuevo en SQL Server 2012. El enlace que proporcionó lo aclara, no es una función en versiones anteriores , incluido 2008 R2.

Que es parte de SQL Server 2012 se puede ver en el árbol de documentos:

 SQL Server 2012 Product Documentation Books Online for SQL Server 2012 Database Engine Transact-SQL Reference (Database Engine) Built-in Functions (Transact-SQL) String Functions (Transact-SQL) 

EDITAR Martin Smith señala útilmente que SQL Server proporciona una implementación de la función CONCAT de ODBC .

Para completar, en SQL 2008 usaría el operador más + para realizar la concatenación de cadenas.

Eche un vistazo a la referencia de MSDN con código de muestra. Comenzando con SQL 2012, es posible que desee utilizar la nueva función CONCAT .

Te sugiero que lances todas las columnas antes de que las condes

 cast('data1' as varchar) + cast('data2' as varchar) + cast('data3' as varchar) 

Esto debería funcionar para ti.

CONCAT, como se dijo, no es compatible con SQL Server 2012. Sin embargo, puede concatenar simplemente utilizando el operador + como se sugiere. Pero cuidado, este operador arrojará un error si el primer operando es un número, ya que piensa que se agregará y no se concatenará. Para resolver este problema solo agregue ” al frente. Por ejemplo

 someNumber + 'someString' + .... + lastVariableToConcatenate 

levantará un error PERO '' + someNumber + 'someString' + ...... funcionará bien.

Además, si hay dos números para concatenar, asegúrese de agregar un ” entre ellos, como

 .... + someNumber + '' + someOtherNumber + ..... 

Caída segura NULL en las aproximaciones de reemplazo para la función CONCAT de SQL Server 2012

SQL Server 2012 :

SELECT CONCAT(data1, data2)

PRE SQL 2012 (dos soluciones) :

SELECT {fn CONCAT(ISNULL(data1, ''), ISNULL(data2, ''))}

SELECT ISNULL(CAST(data1 AS varchar(MAX)), '') + ISNULL(CAST(data2 AS varchar(MAX)), '')

Estas dos soluciones reúnen varias respuestas excelentes y advertencias planteadas por otros carteles, incluidos @Martin Smith, @Svish y @vasin1987.

Estas opciones agregan NULL a '' conversión '' (cadena vacía) para un manejo NULL seguro mientras se toma en cuenta el comportamiento variable del operador + perteneciente a operandos específicos.

Tenga en cuenta que la solución ODBC Scaler Function está limitada a 2 argumentos, mientras que el enfoque del operador + es escalable para muchos argumentos según sea necesario.

Tenga en cuenta también el posible problema identificado por @Swifty con respecto al tamaño de varchar predeterminado aquí remediado por varchar(MAX) .

 (city + ', ' + state + ' ' + zip) as ctstzip for select (city + ', ' + state + ' ' + zip) for insert 

Solo envía o convierte si cualquier tipo de campo es diferente de los demás.

En la inserción, el valor debe estar en el lugar correcto que necesita que se inserte. Usar “como” te dará un error.

es decir

 Insert into testtable (ctstzip) Values ((city + ', ' + state + ' ' + zip))