Bonjour à tous,
Sur SQL Server 2017, je n'arrive pas à comprendre comment une requête est exécutée et surtout comment elle arrive à me faire une erreur.
NoChrono est une colonne de MaTable, de type varchar(50) qui peut parfois contenir des valeurs alphanumériques, mais qui contient uniquement du numérique la plupart du temps.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT MAX(CONVERT(INTEGER, z.NoChrono)) FROM (select * from MaTable INNER JOIN @Temp ON IDtemp = IDMaTable) z;
@Temp est une table temporaire qui est remplie suite à divers traitements, par certains ids de la table MaTable.
La jointure des 2 tables ne doit retourner que des lignes de MaTable ou la colonne NoChrono ne peut contenir qu'un nombre, et c'est bien le cas qu'en je l'exécute seule, je l'ai vérifié.
Cependant, quand j'exécute la requête complète, je me ramasse un message d'erreurcomme si le convert se faisait sur la totalité de la table physique au lieu de n'être fait que sur le résultat de la jointure. AN0001 est bien une donnée "normale" de cette colonne mais qui est filtrée justement par la jointure pour ne pas être prise en compte.Échec de la conversion de la valeur varchar 'AN0001' en type de données int
Je précise que ce code fonctionne sans problème dans les même conditions depuis bientôt 10 ans. Il pête tout d'un coup, là maintenant, sur la base client sans que j'arrive à comprendre pourquoi.
Partager