Xem IsNumeric () Bị hỏng? Chỉ đến một điểm.
SELECT CAST('.' AS MONEY)
trả về 0.00
(mặc dù quá trình truyền không thành công đối với int
và float
)
ISNUMERIC
chỉ cần kiểm tra xem giá trị có thể được truyền đến bất kỳ một trong các kiểu dữ liệu số hay không, điều này nói chung là vô dụng. Thông thường, bạn muốn biết liệu nó có thể được truyền đến một loại cụ thể hay không.
Ngoài ra, nó thậm chí dường như không thực hiện chính xác tác vụ đó cho tất cả các đầu vào có thể có .. ISNUMERIC(' ')
trả về 0
mặc dù truyền thành công cho cả int và money. Ngược lại ISNUMERIC(N'8')
trả về 1
nhưng không truyền thành công đến bất kỳ thứ gì tôi đã thử.
Một số hàm trợ giúp hữu ích cho điều đó ở đây IsNumeric, IsInt, IsNumber.
SQL Server 2012 đã giới thiệu TRY_PARSE
và TRY_CONVERT
giúp ích rất nhiều cho việc này.