MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Concaténer une chaîne et un nombre en SQL

Dans la plupart des cas, la concaténation d'une chaîne et d'un nombre en SQL n'est pas différente de la concaténation de deux chaînes.

La plupart des SGBD concaténeront la chaîne et le nombre comme s'il s'agissait de deux chaînes. En effet, le nombre est généralement converti en chaîne avant l'opération de concaténation.

La plupart des principaux SGBDR fournissent un CONCAT() fonction pour les opérations de concaténation, ainsi qu'un CONCAT_WS() fonction qui vous permet de spécifier un séparateur pour lequel séparer les arguments concaténés.

La plupart des principaux SGBDR incluent également un opérateur de concaténation de chaînes, ce qui nous permet de concaténer ses opérandes.

Le CONCAT() Fonction

La plupart des principaux SGBDR fournissent un CONCAT() fonction pour concaténer ses arguments de chaîne. Généralement, les arguments qui ne sont pas des chaînes sont convertis en chaîne avant que la concaténation ne se produise.

Exemple :

SELECT CONCAT('Player', 456);

Résultat :

Player456

Si nous voulons inclure un espace entre les arguments concaténés, nous pouvons soit ajouter un espace à l'une des chaînes, soit inclure un espace comme argument séparé :

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

Résultat :

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

Les SGBDR qui ont un CONCAT() incluent MySQL, MariaDB, SQL Server, Oracle et PostgreSQL.

SQLite n'a pas de CONCAT() une fonction. SQLite fait avoir un opérateur de concaténation de chaînes (voir ci-dessous).

Le CONCAT_WS() Fonction

Une autre façon d'inclure un espace est d'utiliser le CONCAT_WS() une fonction. Cette fonction vous permet de spécifier un séparateur qui sera utilisé pour séparer tous les arguments concaténés.

Exemple :

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

Résultat :

Player 456 

Cette fonction peut être particulièrement utile si vous avez beaucoup d'arguments à concaténer :

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

Résultat :

Red, 2, Green, 456, Black

Dans ce cas, vous n'avez besoin de spécifier le séparateur qu'une seule fois. Dans cet exemple, j'ai spécifié une virgule et un espace comme séparateur.

Les SGBDR qui ont un CONCAT_WS() incluent MySQL, MariaDB, SQL Server et PostgreSQL.

SQLite et Oracle n'ont pas de CONCAT_WS() fonctionnent, mais ils font avoir un opérateur de concaténation de chaînes (voir ci-dessous).

L'opérateur de concaténation de chaînes

La plupart des SGBDR incluent un opérateur de concaténation de chaînes qui concatène ses opérandes.

Si vous utilisez SQLite, c'est votre seule option.

Exemple :

SELECT 'Player' || 456;

Résultat :

Player456

Notez que dans MySQL, vous devrez d'abord activer l'opérateur de concaténation de canal.

Il en va de même pour MariaDB.

SQL Server

L'exemple ci-dessus ne fonctionnera pas dans SQL Server. Dans SQL Server, utilisez le signe plus (+ ) opérateur de concaténation de chaînes.

De plus, le nombre devra également être converti en chaîne avant de tenter de concaténer :

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

Résultat :

Player456

Voici ce qui se passe si j'essaie de le faire sans d'abord convertir le nombre en chaîne :

SELECT 'Player' + 456;

Résultat :

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

SQL Server pense que nous essayons d'ajouter deux nombres (parce que + est aussi l'opérateur d'addition) et renvoie donc une erreur, car l'un des opérandes est une chaîne.