Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Chuyển đổi không thành công khi chuyển đổi giá trị varchar 'simple' thành kiểu dữ liệu int

Để tránh lỗi như vậy, bạn có thể sử dụng CASE + ISNUMERIC để xử lý các tình huống khi bạn không thể chuyển đổi thành int.
Thay đổi

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

Tới

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

Về cơ bản, điều này đang nói nếu bạn không thể chuyển đổi tôi thành giá trị int gán là 0 (trong ví dụ của tôi)

Ngoài ra, bạn có thể xem bài viết này về cách tạo một hàm tùy chỉnh sẽ kiểm tra xem a.value là số: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. JSON_QUERY () Ví dụ trong SQL Server (T-SQL)

  2. SQL Server - Bao gồm NULL bằng UNPIVOT

  3. Chuyển đổi ‘datetime’ thành ‘datetimeoffset’ trong SQL Server (Ví dụ T-SQL)

  4. Tạo một mô hình khung thực thể mở rộng nhiều cơ sở dữ liệu

  5. Cách đặt ngôn ngữ mặc định cho tất cả thông tin đăng nhập mới trong SQL Server (T-SQL)