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

SQL Server ISDATE dans la vue indexée

Ce devrait être, le cas échéant :

SELECT ... 
    CASE 
         WHEN ISDATE(ColumnName) = 1 THEN CONVERT(datetime, ColumnName, 103) 
         ELSE NULL 
    END
....

mais, vous n'utilisez pas ISDATE WITH CONVERT, car il n'y a pas d'expression comme

ISDATE(CONVERT(varchar,ColumnName,112)) 

sans la conversion imbriquée, la valeur de retour dépend de choses comme les paramètres de langue, d'où son comportement non déterministe. Sans connaissance "externe", il n'est pas possible de prédire le résultat que l'on obtient, en se basant uniquement sur l'entrée.