Tại sao nó không làm việc. Khi QTY là một cột số, khi bạn hiển thị nó, hoặc ngầm chuyển đổi thành varchar (tương tự như nó ngầm định), TẤT CẢ các số sẽ được truyền tới cùng số chữ số thập phân.
Hãy xem xét câu lệnh SQL này
with TBL(qty) as (select 1.1 union all select 3)
SELECT li.QTY FROM TBL LI WHERE li.QTY like '%.%'
Output
1.1
3.0 << this contains "." even if it does not need to
Cast nó vào một bigint và nó sẽ thả bất kỳ số thập phân, sau đó so sánh nó một lần nữa.
SELECT li.QTY FROM TBL LI
WHERE li.QTY <> CAST(qty as bigint)
Nếu bạn PHẢI sử dụng LIKE (hoặc chỉ dành riêng cho chương trình ..)
SELECT li.QTY, CONVERT(varchar, li.qty)
FROM TBL LI
WHERE li.QTY LIKE '%.%[^0]%'
Xin lỗi, tôi đúc để varchar tôi rời khỏi exapmle – djshortbus
Dưới đây là một câu hỏi liên quan ... Chỉ cần áp dụng những thông lệ với '<>' để cột của bạn: http://stackoverflow.com/questions/44046/truncate-not-round-decimal-places-in-sql-server – Matthew