我正在验证数据,并尝试查找单列(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
答案 0 :(得分:1)
一种选择是使用以下公式:
SELECT
num,
CASE WHEN 100*num - CAST(100*num AS int) > 0 THEN 'yes' ELSE 'no' END AS field
FROM yourTable;
例如,对于值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
评论中出现任何问题