sql >> Base de Datos >  >> RDS >> Sqlserver

6 formas de concatenar una cadena y un número en SQL Server

Si alguna vez intentó concatenar una cadena con un número mientras usaba SQL Server, pero recibió un error, este artículo debería aclararle las cosas. Hay más de una manera de realizar la concatenación usando T-SQL en SQL Server, y si está concatenando diferentes tipos de datos (como una cadena y un número), entonces puede recibir un error, dependiendo de cómo haga la concatenación.

Lo que debe recordar al concatenar diferentes tipos de datos es que primero deben convertirse en el mismo tipo de datos. Más específicamente, al concatenar una cadena con un número, el número deberá convertirse en una cadena antes de que pueda concatenarse con la cadena. Afortunadamente, SQL Server/T-SQL hace que esto sea muy sencillo.

Este artículo presenta seis formas de concatenar cadenas con números usando T-SQL.

La función CONCAT()

La forma más obvia (y posiblemente la mejor) de concatenar una cadena y un número es usar CONCAT() función. Esto le permite proporcionar la cadena y el número como dos argumentos separados. SQL Server los concatenará y su concatenación estará completa.

Ejemplo

SELECT CONCAT('Comments: ', 9) AS Result;

Resultado:

Result     
-----------
Comments: 9

Como puedes ver, esto funciona perfectamente. La cadena y el número se presentan como un solo campo.

Tenga en cuenta que no está limitado a una sola cadena y un número:el CONCAT() La función puede aceptar hasta 254 argumentos (es decir, puede unir hasta 254 cadenas/números juntos.

También tenga en cuenta que CONCAT() convierte implícitamente todos los argumentos en tipos de cadena antes de la concatenación. Además, CONCAT() implícitamente convierte cualquier valor nulo en cadenas vacías.

Función CONCAT_WS()

Podemos llevar el ejemplo anterior un paso más allá usando CONCAT_WS() función. Esta función le permite especificar un separador.

Para proporcionar un separador, simplemente agréguelo como primer argumento. Luego especifique la cadena y el número como segundo y tercer argumento.

SELECT CONCAT_WS(': ', 'Comments', 9) AS Result;

Resultado:

Result     
-----------
Comments: 9

Tenga en cuenta que esta función no es necesariamente adecuada para separar pares de nombre/valor, ya que el separador se agrega entre cada elemento individual que se concatena (por lo que también se agregará entre cada par en caso de que tenga varios pares). En nuestro caso funciona bien, porque solo tenemos un par nombre/valor para concatenar.

Sin embargo, siempre puedes anidar múltiples CONCAT_WS() funciones para devolver la concatenación correcta para sus necesidades (para que pueda tener un separador diferente entre cada par).

Función CONVERTIR()

Si por alguna razón no puede (o no quiere) usar CONCAT() o CONCAT_WS() funciones, puede realizar una concatenación utilizando el operador de concatenación de cadenas (+ ). Cuando utilice este método, deberá realizar cualquier conversión de tipo de datos manualmente.

Una forma de convertir entre tipos de datos es usar CONVERT() función.

Así es como lo haría utilizando los mismos datos de los ejemplos anteriores:

SELECT 'Comments: ' + CONVERT(varchar(12), 9) AS Result;

Resultado:

Result     
-----------
Comments: 9

En este caso, convierto el número entero a varchar(12), pero puede ser cualquier tipo de datos y longitud que necesite.

Función CAST()

El CAST() La función es muy similar a CONVERT() función. La principal diferencia es que CAST() es ANSI estándar y CONVERT() es específico de T-SQL. Habiendo dicho eso, CONVERT() tiene algunas funciones adicionales, pero para los fines de estos ejemplos, puede usar cualquiera de las dos.

Aquí está el CAST() versión utilizando los mismos datos de los ejemplos anteriores:

SELECT 'Comments: ' + CAST(9 AS varchar(12)) AS Result;

Resultado:

Result     
-----------
Comments: 9

Función TRY_CONVERT()

Un problema potencial al usar CONVERT() La función es que, si la conversión no tiene éxito, obtendrá un error. Si bien esto está bien en muchos casos, en algunos casos esto podría no ser deseable. En tales casos, puede encontrar TRY_CONVERT() más adecuado.

El TRY_CONVERT() La función convierte el tipo de datos al igual que CONVERT() la función lo hace. Sin embargo, si los datos no se pueden convertir, devolverá null .

Por ejemplo, si intentamos hacer lo siguiente, obtenemos un error:

SELECT 'Comments: ' + CONVERT(varchar(1), 10.00) AS Result;

Resultado:

Error: Arithmetic overflow error converting numeric to data type varchar.

Sin embargo, si usamos TRY_CONVERT() , obtenemos null :

SELECT 'Comments: ' + TRY_CONVERT(varchar(1), 10.00) AS Result;

Resultado:

Result
------
null

Puede usar la programación condicional en este caso para realizar una tarea diferente según el resultado.

La función TRY_CAST()

El TRY_CAST() La función funciona de la misma manera. Convierte el tipo de datos tal como el CAST() la función lo hace y, si los datos no se pueden convertir, devolverá null .

Por ejemplo, esto arroja un error:

SELECT 'Comments: ' + CAST(10.00 AS varchar(1)) AS Result;

Resultado:

Error: Arithmetic overflow error converting numeric to data type varchar.

Pero si usamos TRY_CAST() en su lugar, obtenemos null :

SELECT 'Comments: ' + TRY_CAST(10.00 AS varchar(1)) AS Result;

Resultado:

Result
------
null