查找SQL Server中小数点后的位数大于3的记录

时间:2016-06-26 15:47:33

标签: sql-server-2008

请您帮忙解决以下问题。我有一个表,其中一列有小数值,如

2.06976
1.089
1.04
1.104
1.1004
15.05791506

我希望查询过滤掉小数点后的位数大于3的所有记录。结果将是

2.06976
1.1004
15.05791506

感谢您是否可以帮助我。我一直在将数据导出到excel并做各种各样的事情,这是永远的。

1 个答案:

答案 0 :(得分:0)

它可能不是最有效的,但它似乎比你目前的解决方案更好。

declare @Decimals table
(
    Value decimal(11,9)
)

insert into @Decimals (Value) values (2.06976)
insert into @Decimals (Value) values (1.089)
insert into @Decimals (Value) values (1.04)
insert into @Decimals (Value) values (1.104)
insert into @Decimals (Value) values (1.1004)
insert into @Decimals (Value) values (15.05791506)

select 
    *
from
    @Decimals
where
    len(cast(CAST(Value - CAST(value as decimal(9,0)) as float) as varchar)) > 5

where子句执行以下操作:

  1. 从十进制值中减去整数,留下0.xxxxxx。
  2. 将其转换为浮动以删除尾随零
  3. 将该值投射到字符串
  4. 检查结果字符串的长度是否超过5,因为我们知道前两个字符将始终为“0”。