sql >> Database >  >> RDS >> Sqlserver

Fout bij het converteren van gegevenstype varchar

OKÉ. Ik heb eindelijk een weergave gemaakt die werkt:

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]%')

Met dank aan AdaTheDev en CodeByMoonlight . Ik heb uw twee antwoorden gebruikt om dit te bereiken. (Uiteraard ook met dank aan de andere antwoorden)

Als ik nu joins doe met andere bigint-cols of iets doe als 'SELECT * FROM MyView waar mycol=1', wordt het juiste resultaat zonder fouten geretourneerd. Mijn gok is dat de CAST in de query zelf ervoor zorgt dat de query-optimizer niet naar de originele tabel kijkt, zoals Christian Hayter zei dat het mogelijk is met de andere weergaven



  1. Verbinding met database lijkt succesvol, maar INSERT INTO verzendt geen gegevens

  2. Wat zijn manieren om wederzijdse vrienden te krijgen in een (1, 2) (2, 1) vriendschapsscenario?

  3. CSV importeren naar MySQL

  4. Missiekritieke toegangstoepassingen identificeren en beheren tijdens een ontwikkelingsproject