Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Преобразуването не бе успешно при преобразуване на стойността на varchar 'simple' в тип данни int

За да избегнете такава грешка, можете да използвате CASE + ISNUMERIC за обработка на сценарии, когато не можете да конвертирате в int.
Промяна

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

До

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

По принцип това означава, че не можете да ме преобразувате в int, присвоявайки стойност от 0 (в моя пример)

Като алтернатива можете да разгледате тази статия за създаване на персонализирана функция, която ще проверява дали a.value е номер: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. Спрете да карате SQL Server да ви върши мръсната работа

  2. Как да поправя грешката „Доставчик на име Pipes, грешка 40 – Не можах да отворя връзка към „SQL Server“?

  3. Инструкция PRINT в T-SQL

  4. CLR строга сигурност на SQL Server 2017

  5. Направете, а не нарушавайте производителността на SQL Server