Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Correction de "La conversion a échoué lors de la conversion de la valeur varchar" lors de la tentative de concaténation dans SQL Server

Si vous obtenez l'erreur Msg 245 indiquant "La conversion a échoué lors de la conversion de la valeur varchar…" lorsque vous essayez d'effectuer une opération de concaténation dans SQL Server, il est probable que vous essayez de concaténer une chaîne et un nombre.

Cela entraînera une erreur, car SQL Server essaie d'ajouter la chaîne et le nombre au lieu de les concaténer.

Pour résoudre ce problème, convertissez le nombre en chaîne ou utilisez une fonction telle que CONCAT() ou CONCAT_WS() pour effectuer la concaténation.

L'erreur

Voici un exemple de code à l'origine de l'erreur :

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 les deux opérandes et rencontre donc un problème lorsque nous essayons d'ajouter la chaîne et le nombre.

Solution 1

Une façon de résoudre ce problème consiste à convertir explicitement le nombre en chaîne :

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

Résultat :

Player 456

Cela amène SQL Server à comprendre que nous essayons de concaténer les opérandes au lieu de les ajouter.

Solution 2

Une autre façon de le faire est d'utiliser une fonction comme CONCAT() pour effectuer la concaténation :

SELECT CONCAT('Player ', 456);

Résultat :

Player 456

CONCAT() est une fonction de chaîne, et donc SQL Server comprend maintenant que nous voulons concaténer deux chaînes au lieu d'ajouter deux nombres.

Alternativement, nous pourrions utiliser le CONCAT_WS() fonction, qui nous permet de spécifier un séparateur à utiliser entre les arguments concaténés.