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

Konwersja nie powiodła się podczas konwertowania wartości varchar „simple” na typ danych int

Aby uniknąć takiego błędu, możesz użyć CASE + ISNUMERIC do obsługi scenariuszy, w których nie można przekonwertować na int.
Zmień

CONVERT(INT, CONVERT(VARCHAR(12), a.value))

Do

CONVERT(INT,
        CASE
        WHEN IsNumeric(CONVERT(VARCHAR(12), a.value)) = 1 THEN CONVERT(VARCHAR(12),a.value)
        ELSE 0 END) 

Zasadniczo oznacza to, że nie możesz przekonwertować mnie na int przypisz wartość 0 (w moim przykładzie)

Alternatywnie możesz zapoznać się z tym artykułem o tworzeniu niestandardowej funkcji, która sprawdzi, czy a.value to numer:http://www.tek-tips.com/faqs.cfm?fid=6423



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sprawdź, czy obiekt jest procedurą składowaną, używając OBJECTPROPERTY() w SQL Server

  2. SET a SELECT podczas przypisywania zmiennych?

  3. Które tabele są bardziej wydajne, CTE czy tymczasowe?

  4. Uzyskaj listę kont pocztowych bazy danych w SQL Server (T-SQL)

  5. Jak napisać .Skip(1000).Take(100) LINQ w czystym SQL?