Vous semblez supposer une sorte d'évaluation de court-circuit ou un ordre garanti des prédicats dans le WHERE
clause. Ce n'est pas garanti. Lorsque vous avez des types de données mixtes dans une colonne comme celle-ci, le seul moyen sûr de les traiter est avec un CASE
expression.
Utiliser (par exemple)
CONVERT(DATETIME,
CASE WHEN ISDATE(pa.Attribute_Value) = 1 THEN pa.Attribute_Value END)
Non
CONVERT(DATETIME, pa.Attribute_Value)