在何条件下排除小数以“ 0”或“ 5”结尾的金额

时间:2019-08-01 15:54:11

标签: sql sql-server

目标:

我在“金额”列中有小数点。我正在尝试排除金额值以“ 0”或“ 5”结尾的行。

我该如何实现...

列类型:十进制(7,2)

例如:要排除的数字

10.25
11.20
100.00

3 个答案:

答案 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