MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Concatenar uma string e um número no SQL


Na maioria dos casos, concatenar uma string e um número no SQL não é diferente de concatenar duas strings.

A maioria dos DBMSs concatenará a string e o número como se fossem ambas strings. Isso ocorre porque o número geralmente é convertido em uma string antes da operação de concatenação.

A maioria dos principais RDBMSs fornece um CONCAT() função para operações de concatenação, bem como um CONCAT_WS() função que permite especificar um separador para separar os argumentos concatenados.

A maioria dos principais RDBMSs também inclui um operador de concatenação de strings, que nos permite concatenar seus operandos.

O CONCAT() Função


A maioria dos principais RDBMSs fornece um CONCAT() função para concatenar seus argumentos de string. Geralmente, os argumentos que não são de string são convertidos em uma string antes que a concatenação ocorra.

Exemplo:
SELECT CONCAT('Player', 456);

Resultado:
Player456

Se quisermos incluir um espaço entre os argumentos concatenados, podemos adicionar um espaço a uma das strings ou incluir um espaço como um argumento separado:
SELECT 
    CONCAT('Player ', 456) AS "Option 1",
    CONCAT('Player', ' ', 456) AS "Option 2";

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

RDBMSs que possuem um CONCAT() incluem MySQL, MariaDB, SQL Server, Oracle e PostgreSQL.

SQLite não tem um CONCAT() função. SQLite faz tem um operador de concatenação de strings (veja abaixo).

O CONCAT_WS() Função


Outra maneira de incluir um espaço é usar o CONCAT_WS() função. Esta função permite especificar um separador que será usado para separar todos os argumentos concatenados.

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

Resultado:
Player 456 

Esta função pode ser particularmente útil se você tiver muitos argumentos para concatenar:
SELECT CONCAT_WS(', ', 'Red', 2, 'Green', 456, 'Black');

Resultado:
Red, 2, Green, 456, Black

Nesses casos, você só precisa especificar o separador uma vez. Neste exemplo, especifiquei uma vírgula e um espaço como separador.

RDBMSs que possuem um CONCAT_WS() incluem MySQL, MariaDB, SQL Server e PostgreSQL.

SQLite e Oracle não possuem um CONCAT_WS() funcionam, mas eles fazem tem um operador de concatenação de strings (veja abaixo).

O Operador de Concatenação de String


A maioria dos RDBMSs inclui um operador de concatenação de strings que concatena seus operandos.

Se você estiver usando SQLite, esta é sua única opção.

Exemplo:
SELECT 'Player' || 456;

Resultado:
Player456

Observe que no MySQL, você precisará habilitar primeiro o operador de concatenação de pipe.

O mesmo vale para MariaDB.

SQL Server


O exemplo acima não funcionará no SQL Server. No SQL Server, use o sinal de mais (+ ) operador de concatenação de string.

Além disso, o número também precisará ser convertido em uma string antes de tentar concatenar:
SELECT 'Player' + CAST(456 AS varchar(3));

Resultado:
Player456

Aqui está o que acontece se eu tentar fazer isso sem primeiro converter o número em uma string:
SELECT 'Player' + 456;

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

O SQL Server pensa que estamos tentando adicionar dois números (porque + também é o operador de adição) e, portanto, retorna um erro, pois um dos operandos é uma string.