我想使用between
运算符从列中选择数据
看起来像这样:
select count(distinct value)
from dbo.OrganizationSupplementalData
where value between 5 and 30;
但是得到
Error converting data type varchar to numeric
我也尝试过使用CAST,但是它不起作用:
select count(distinct value)
from dbo.OrganizationSupplementalData
where cast(value as decimal(22, 8)) between 0.1 and 30.00;
在value
列中包含以下类型的数据:
2017
2017
2017
2017
8:55:00 AM
11:00:00 AM
8:00:00 AM
8:45:00 AM
3.66
2.35
我最终如何提取所需的数据? 谢谢!
答案 0 :(得分:2)
使用TRY_CAST()
:
where TRY_CAST(value AS DECIMAL(22, 8)) between 0.1 and 30.00
很明显,当您尝试将非数字值转换为数字时,它们会引起问题。在这种情况下,TRY_CAST()
将返回NULL
。
在不受支持的旧版SQL Server中,可以使用case
表达式:
where (case when value not like '%[0-9.]%' and
value not like '%.%.%'
then CAST(value AS DECIMAL(22, 8))
end)