¿Cómo uso la función CONCAT en SQL Server 2008 R2?
Estaba buscando una función CONCAT
en SQL Server 2008 R2. Yo encontré el enlace para esta función. Pero cuando uso esta función, da el siguiente error:
Msg 195, Nivel 15, Estado 10, Línea 7
'CONCAT' no es un nombre de función incorporado reconocido.
¿Existe la función CONCAT
en SQL Server 2008 R2?
Si no, ¿cómo concateno cadenas en SQL Server 2008 R2?
6 answers
CONCAT
es nuevo en SQL Server 2012. El enlace que diste deja esto claro, no es una función en Versiones anteriores, incluyendo 2008 R2.
Que es parte de SQL Server 2012 se puede ver en el árbol del documento:
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 amablemente que SQL Server proporciona una implementación de la función CONCAT
de ODBC .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-11 14:48:45
Solo para completar - en SQL 2008 usaría el operador plus +
para realizar la concatenación de cadenas.
Echa un vistazo a la referencia MSDN con código de ejemplo. A partir de SQL 2012, es posible que desee utilizar la nueva función CONCAT .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-08 21:12:12
Sugiero que echar todas las columnas antes de concat ellos
cast('data1' as varchar) + cast('data2' as varchar) + cast('data3' as varchar)
Esto debería funcionar para usted.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-11 13:08:36
CONCAT, como se ha indicado, no es compatible antes de SQL Server 2012. Sin embargo, puede concatenar simplemente usando el operador + como se sugiere. Pero tenga cuidado, este operador lanzará un error si el primer operando es un número, ya que piensa que se sumará y no concatenar. Para resolver este problema, simplemente agregue " en frente. Por ejemplo
someNumber + 'someString' + .... + lastVariableToConcatenate
Generará un error, PERO '' + someNumber + 'someString' + ......
funcionará bien.
También, si hay dos números para concatenar asegúrese de agregar un " entre ellos, así
.... + someNumber + '' + someOtherNumber + .....
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-02 10:02:57
NULL caída segura 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 recopilan varias respuestas excelentes y advertencias planteadas por otros carteles, incluidos @Martin Smith, @Svish y @vasin1987.
Estas opciones agregan NULL
a ''
(cadena vacía) casting para un manejo seguro NULL
teniendo en cuenta el comportamiento variable del operador +
perteneciente a operandos específicos.
Tenga en cuenta que la solución de la función de escalador ODBC está limitada a 2 argumentos,+
el enfoque del operador es escalable a muchos argumentos según sea necesario.
Tenga en cuenta también el problema potencial identificado por @Swifty con respecto al tamaño predeterminado varchar
aquí solucionado por varchar(MAX)
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-22 18:27:47
(city + ', ' + state + ' ' + zip) as ctstzip for select
(city + ', ' + state + ' ' + zip) for insert
Solo cast o convert si cualquier tipo de campo es diferente de los demás.
Al insertar el valor debe estar en el lugar correcto, debe insertarlo. Usar " as " le dará un error.
Es decir,
Insert into testtable (ctstzip) Values ((city + ', ' + state + ' ' + zip))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-25 17:51:41