sql >> Base de Datos >  >> NoSQL >> MongoDB

Concatenar una cadena y un número en SQL

En la mayoría de los casos, concatenar una cadena y un número en SQL no es diferente a concatenar dos cadenas.

La mayoría de los DBMS concatenarán la cadena y el número como si ambos fueran cadenas. Esto se debe a que el número generalmente se convierte en una cadena antes de la operación de concatenación.

La mayoría de los principales RDBMS proporcionan un CONCAT() función para operaciones de concatenación, así como un CONCAT_WS() función que le permite especificar un separador para separar los argumentos concatenados.

La mayoría de los principales RDBMS también incluyen un operador de concatenación de cadenas, que nos permite concatenar sus operandos.

El CONCAT() Función

La mayoría de los principales RDBMS proporcionan un CONCAT() función para concatenar sus argumentos de cadena. Por lo general, los argumentos que no son cadenas se convierten en una cadena antes de que se produzca la concatenación.

Ejemplo:

SELECT CONCAT('Player', 456);

Resultado:

Player456

Si queremos incluir un espacio entre los argumentos concatenados, podemos agregar un espacio a una de las cadenas o incluir un espacio como un argumento separado:

SELECT 
    CONCAT('Player ', 456) AS "Option 1",
    CONCAT('Player', ' ', 456) AS "Option 2";

Resultado:

+------------+------------+
| Option 1   | Option 2   |
+------------+------------+
| Player 456 | Player 456 |
+------------+------------+

RDBMS que tienen un CONCAT() incluyen MySQL, MariaDB, SQL Server, Oracle y PostgreSQL.

SQLite no tiene un CONCAT() función. SQLite tener un operador de concatenación de cadenas (ver más abajo).

El CONCAT_WS() Función

Otra forma de incluir un espacio es usar CONCAT_WS() función. Esta función le permite especificar un separador que se usará para separar todos los argumentos concatenados.

Ejemplo:

SELECT CONCAT_WS(' ', 'Player', 456);

Resultado:

Player 456 

Esta función puede ser particularmente útil si tiene muchos argumentos para concatenar:

SELECT CONCAT_WS(', ', 'Red', 2, 'Green', 456, 'Black');

Resultado:

Red, 2, Green, 456, Black

En tales casos, solo necesita especificar el separador una vez. En este ejemplo, especifiqué una coma y un espacio como separador.

RDBMS que tienen un CONCAT_WS() incluyen MySQL, MariaDB, SQL Server y PostgreSQL.

SQLite y Oracle no tienen un CONCAT_WS() funcionan, pero lo hacen tener un operador de concatenación de cadenas (ver más abajo).

El operador de concatenación de cadenas

La mayoría de los RDBMS incluyen un operador de concatenación de cadenas que concatena sus operandos.

Si está utilizando SQLite, esta es su única opción.

Ejemplo:

SELECT 'Player' || 456;

Resultado:

Player456

Tenga en cuenta que en MySQL, primero deberá habilitar el operador de concatenación de tuberías.

Lo mismo ocurre con MariaDB.

Servidor SQL

El ejemplo anterior no funcionará en SQL Server. En SQL Server, use el signo más (+ ) operador de concatenación de cadenas.

Además, el número también deberá convertirse en una cadena antes de intentar concatenar:

SELECT 'Player' + CAST(456 AS varchar(3));

Resultado:

Player456

Esto es lo que sucede si trato de hacerlo sin convertir primero el número en una cadena:

SELECT 'Player' + 456;

Resultado:

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'Player' to data type int.

SQL Server cree que estamos intentando sumar dos números (porque + es también el operador de suma) y por lo tanto devuelve un error, debido a que uno de los operandos es una cadena.