Câu trả lời:
Bạn có thể sử dụng CAST hoặc CHUYỂN ĐỔI :
SELECT CAST(MyVarcharCol AS INT) FROM Table
SELECT CONVERT(INT, MyVarcharCol) FROM Table
select CASE WHEN ISNUMERIC('x') = 1 THEN CAST('x' AS INT) ELSE 0 END
IsNumeric()
có thể tạo ra một số kết quả đồi trụy. Nó sẽ trả về TRUE cho chuỗi "-.", Điều này vẫn sẽ gây ra lỗi khi bạn cố chuyển nó thành một số.
Cũng cần lưu ý rằng khi chuyển đổi từ chuỗi số tức là '56.72'
sang INT, bạn có thể gặp phải lỗi SQL.
Conversion failed when converting the varchar value '56.72' to data type int.
Để giải quyết vấn đề này, chỉ cần thực hiện hai chuyển đổi như sau:
CHUINGI -> SỐ -> INT
hoặc là
SELECT CAST(CAST (MyVarcharCol AS NUMERIC(19,4)) AS INT)
Khi sao chép dữ liệu từ TableA sang TableB, chuyển đổi là ẩn, do đó bạn không cần chuyển đổi thứ hai (nếu bạn hài lòng làm tròn xuống INT gần nhất):
INSERT INTO TableB (MyIntCol)
SELECT CAST(MyVarcharCol AS NUMERIC(19,4)) as [MyIntCol]
FROM TableA
Bắt đầu với SQL Server 2012, bạn có thể sử dụng TRY_PARSE hoặc TRY_CONVERT .
SELECT TRY_PARSE(MyVarcharCol as int)
SELECT TRY_CONVERT(int, MyVarcharCol)
Hãy thử cái này, nó hoạt động với tôi ở Athena:
cast(MyVarcharCol as integer)