目标:
我在“金额”列中有小数点。我正在尝试排除金额值以“ 0”或“ 5”结尾的行。
我该如何实现...
列类型:十进制(7,2)
例如:要排除的数字
10.25
11.20
100.00
答案 0 :(得分:3)
您可能想要这样:
WHERE (CAST(your_field * 100 AS INTEGER) % 5) <> 0
但是,如果没有更多有关您的数据类型的详细信息,很难说出来。此外,浮点值还会出现一些时髦的舍入问题。
答案 1 :(得分:3)
一种有趣的方式是使用“模块化”算法
where col % 0.1 not in (0.00, 0.05)
%
运算符适用于非整数基和整数基。
答案 2 :(得分:0)
我在这里所做的是将数字更改为字符串,剪掉尾随的空格,然后反转字符串以获取第一个字符以查看它是否为1或5。
SELECT * into #test FROM (SELECT CAST(10.25 as decimal(7,2)) as val UNION SELECT 8.21 UNION SELECT 6.00) DQ
select * from #test WHERE LEFT(REVERSE(RTRIM(CAST(val as nvarchar(50)))),1) NOT IN ('5', '0')
drop table #test