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

Fehler beim Konvertieren des Datentyps varchar

OK. Ich habe endlich eine Ansicht erstellt, die funktioniert:

SELECT TOP (100) PERCENT id, CAST(CASE WHEN IsNumeric(MyCol) = 1 THEN MyCol ELSE NULL END AS bigint) AS MyCol
FROM         dbo.MyTable
WHERE     (MyCol NOT LIKE '%[^0-9]%')

Danke an AdaTheDev und CodeByMoonlight . Ich habe Ihre beiden Antworten verwendet, um dazu zu gelangen. (Dank natürlich auch an die anderen Antwortenden)

Wenn ich jetzt Joins mit anderen Bigint-Spalten mache oder so etwas wie 'SELECT * FROM MyView where mycol=1' mache, gibt es das richtige Ergebnis ohne Fehler zurück. Meine Vermutung ist, dass der CAST in der Abfrage selbst dazu führt, dass der Abfrageoptimierer nicht auf die Originaltabelle schaut, wie Christian Hayter sagte, dass dies möglicherweise mit den anderen Ansichten weitergeht