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.