sql >> Database >  >> RDS >> Sqlserver

SQL Server ISDATE in geïndexeerde weergave

Het zou moeten zijn, of helemaal niet:

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

maar u gebruikt ISDATE WITH CONVERT niet, omdat er geen uitdrukking is zoals

ISDATE(CONVERT(varchar,ColumnName,112)) 

zonder de geneste conversie is de retourwaarde afhankelijk van zaken als taalinstellingen, vandaar dat het niet-deterministisch gedrag is. Zonder "externe" kennis is het niet mogelijk om het resultaat te voorspellen dat men krijgt, alleen op basis van de input.



  1. Prioriteit van de operator AND en OR in Mysql select query

  2. Maak een tabel zonder kolommen

  3. Arabische teksten in php/mysql verschijnen soms "???" en soms verschijnen Ùؤتا na select/insert statement

  4. Hoe lege tabellen in Oracle te exporteren