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

Die Konvertierung in datetime schlägt nur bei der WHERE-Klausel fehl?

Sie scheinen eine Art Kurzschlussbewertung oder eine garantierte Reihenfolge der Prädikate im WHERE anzunehmen Klausel. Dies ist nicht garantiert. Wenn Sie gemischte Datentypen in einer solchen Spalte haben, ist der einzige sichere Weg, sie zu behandeln, ein CASE Ausdruck.

Verwenden Sie (z. B.)

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

Nicht

CONVERT(DATETIME, pa.Attribute_Value)