Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server ISDATE in der indizierten Ansicht

Es sollte, wenn überhaupt, lauten:

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

aber Sie verwenden ISDATE WITH CONVERT nicht, da es keinen Ausdruck wie

gibt
ISDATE(CONVERT(varchar,ColumnName,112)) 

Ohne die verschachtelte Konvertierung ist der Rückgabewert von Dingen wie Spracheinstellungen abhängig, daher ist es nicht deterministisches Verhalten. Ohne "externes" Wissen ist es nicht möglich, das Ergebnis allein aufgrund des Inputs vorherzusagen.