sql >> Database >  >> RDS >> Sqlserver

Conversie naar datetime mislukt alleen op WHERE-clausule?

U lijkt uit te gaan van een soort kortsluitingsevaluatie of gegarandeerde volgorde van de predikaten in de WHERE clausule. Dit is niet gegarandeerd. Als je gemengde datatypes in zo'n kolom hebt, is de enige veilige manier om ze te behandelen een CASE uitdrukking.

Gebruik (bijv.)

CONVERT(DATETIME, 
      CASE WHEN ISDATE(pa.Attribute_Value) = 1 THEN pa.Attribute_Value END)

Niet

CONVERT(DATETIME, pa.Attribute_Value)


  1. Repliceer Base64-decodering van Java in PL/SQL

  2. Eerste normaalvorm en voor- en achternaam

  3. Sorteer op beste match in welsprekend

  4. SQL Server converteert varbinary naar string