Pourquoi ne veulent le faire? Une expression SQL Server a un type fixe unique. En d'autres termes, une seule expression ne peut pas être varchar(50)
ou int
en fonction de la façon dont l'expression est évaluée. Vous pouvez placer chaque cas à sql_variant
, mais cela peut ou non avoir un sens en fonction de ce que vous essayez de faire.
EDIT
Si vous exécutez cette requête à partir d'une procédure stockée, vous pouvez créer un bloc if..else pour exécuter une version différente de la requête basée sur la valeur de @ID. Par exemple:
IF (@ID = 1) BEGIN
SELECT Cast(Code AS int) AS Code FROM ...
END
ELSE BEGIN
SELECT Code FROM ...
END
Quelle est l'erreur? – hgulyan
Je reçois toujours l'erreur: La conversion a échoué lors de la conversion de la valeur nvarchar 'ASS2902' en type de données int même si @ID = 2 mais je veux juste faire le casting pour @ID = 1 – Mathieu
Il essayera de lancer quand même. Vérifiez la mise à jour dans ma réponse. – hgulyan