Estaba buscando una CONCAT
función en SQL Server 2008 R2. Me encontré el enlace para esta función . Pero cuando uso esta función, da el siguiente error:
Msg 195, Level 15, State 10, Line 7
'CONCAT' no es un nombre de función integrado reconocido.
¿Existe la CONCAT
función en SQL Server 2008 R2?
Si no es así, ¿cómo concateno cadenas en SQL Server 2008 R2?
sql-server
sql-server-2008
tsql
Mitesh Budhabhatti
fuente
fuente
CONCAT
sea nuevo para 2012.Respuestas:
CONCAT
es nuevo en SQL Server 2012. El enlace que proporcionó deja esto en claro, no es una función en versiones anteriores , incluida 2008 R2.Que es parte de SQL Server 2012 se puede ver en el árbol del documento:
EDITAR Martin Smith señala amablemente que SQL Server proporciona una implementación de la
CONCAT
función de ODBC .fuente
SELECT {fn concat ('foo', 'bar')};
en versiones anteriores. Sin embargo, solo acepta 2 parámetros.+
operador, como @ lynn-langit menciona en su respuesta, que al principio me perdí por completo porque solo leí la respuesta aceptada ...+
se comporta de manera diferente, los resultados paraSELECT 'A' + 'B' + 'C'
vsSELECT CONCAT('A', 'B', 'C')
vsSELECT 'A' + 'B' + NULL
vsSELECT CONCAT('A', 'B', NULL)
sonABC
,ABC
,NULL
,AB
NULL
, así que+
funcionó muy bien :)Solo 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. A partir de SQL 2012, es posible que desee utilizar la nueva función CONCAT .
fuente
Te sugiero que eches todas las columnas antes de encajarlas.
Esto debería funcionar para ti.
fuente
CONCAT, como se indicó, no es compatible antes de SQL Server 2012. Sin embargo, puede concatenar simplemente usando el operador + como se sugiere. Pero cuidado, este operador arrojará un error si el primer operando es un número, ya que cree que estará sumando y no concatenando. Para resolver este problema, simplemente agregue "" al frente. Por ejemplo
generará un error PERO
'' + someNumber + 'someString' + ......
funcionará bien.Además, si hay dos números para concatenar, asegúrese de agregar un '' entre ellos, así
fuente
SELECT 'varchar(' + 5 + ')'
arroja el error "La conversión falló al convertir el valor nvarchar 'varchar (' al tipo de datos int", así que supongo que su respuesta no es válida.Caída segura NULL en 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 se suman
NULL
a la''
conversión (cadena vacía) para unNULL
manejo seguro al tiempo que tienen en cuenta el comportamiento variable del+
operador en relación con 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 a muchos argumentos según sea necesario.Tenga en cuenta también el problema potencial identificado por @Swifty con respecto al
varchar
tamaño predeterminado resuelto aquí porvarchar(MAX)
.fuente
Solo transmite o convierte si algún tipo de campo es diferente de los demás.
Al insertar, el valor debe estar en el lugar correcto, es necesario insertarlo. Usar "como" le dará un error.
es decir
fuente
Sí, la función no está en sql 2008. Puede usar la operación de conversión para hacer eso.
Por ejemplo tenemos
employee
mesa y quieresname
conapplydate
.para que puedas usar
Funcionará donde la función concat no esté funcionando.
fuente