Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Błąd konwersji typu danych varchar

OK. W końcu stworzyłem widok, który działa:

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

Dzięki AdaTheDev i CodeByMoonlight . Użyłem twoich dwóch odpowiedzi, żeby do tego dojść. (Oczywiście dzięki innym odpowiedziom)

Teraz, gdy łączy się z innymi bigint cols lub robię coś takiego jak 'SELECT * FROM MyView, gdzie mycol=1' zwraca poprawny wynik bez błędów. Domyślam się, że CAST w samym zapytaniu powoduje, że optymalizator zapytań nie patrzy na oryginalną tabelę, jak powiedział Christian Hayter, może być kontynuowany z innymi widokami



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie SQL do pobrania danych z ostatnich 3 miesięcy

  2. Złe nawyki:unikanie NULL w SQL Server

  3. Jak wykonać kopię zapasową bazy danych SQL Server za pomocą T-SQL

  4. Zakres dat przypadający między dwiema datami w zapytaniu LINQ

  5. dołącz do kolumny danych rozdzielanych przecinkami