如何找到小数点后2位以上的值?

时间:2019-06-25 14:48:31

标签: sql decimal

我正在验证数据,并尝试查找单列(allowed_amount)中是否有任何值,这些值的小数点后2位(24.1145678、234.444,-1234.09012)。

with t1 as (
  select (allowed_amount - round(allowed_amount,2)) as ck
  from export_core_report_client_output
  where runid = '0c7c2d34-6cc3-43b0-ae4b-4bd8f4bddfb0'
) 
select min(ck) as min, max(ck) as max from t1

2 个答案:

答案 0 :(得分:1)

一种选择是使用以下公式:

SELECT
    num,
    CASE WHEN 100*num - CAST(100*num AS int) > 0 THEN 'yes' ELSE 'no' END AS field
FROM yourTable;

Demo

例如,对于值24.1234,上述公式将计算:

2412.34 - 2412 = 0.34 > 0

但是对于24.12,我们得到:

2412 - 2412 = 0

答案 1 :(得分:0)

您可以使用Charindex来做到这一点,假设allowed_amount列是varchar或nvarchar

select len(substring(allowed_amount,charindex('.',allowed_amount)+1,len(allowed_amount))) from export_core_report_client_output

这将为您提供一个十进制值的计数,然后您可以在where子句中使用相同的语句进行检查,例如:

select len(substring(allowed_amount,charindex('.',allowed_amount)+1,len(allowed_amount))) from export_core_report_client_output where len(substring(allowed_amount,charindex('.',allowed_amount)+1,len(allowed_amount)))> 2

评论中出现任何问题