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

SQL Server und implizite Konvertierung von Typen

Dies ist die Liste, nach der Sie DataType Precedence suchen

In Ihren Beispielen:

WHERE quantity > '3'

'3' wird in int umgewandelt, passende Menge

WHERE quantityTest > 3

Kein Casting erforderlich

WHERE date = 20120101

20120101 als Zahl wird auf ein Datum gecastet, das zu groß ist. zB

select cast(20120101 as datetime)

Dies unterscheidet sich von

WHERE date = '20120101'

Wobei das Datum als String kann gecastet werden.

Wenn Sie ein Drittel der CAST- und CONVERT-Referenz nach unten gehen Im Abschnitt Implizite Konvertierungen finden Sie eine Tabelle mit zulässigen impliziten Konvertierungen. Nur weil es erlaubt ist, bedeutet das nicht, dass es funktioniert, wie z. B. (20120101 -> datetime).