显示结果与十进制数据类型以外的结果时出现问题



我使用的SQL查询被设置为提取所有大于或等于12的值。

WHERE CAST(Value AS DECIMAL(6,2)) >= 12.0

但是,结果集现在包含的值不完全是小数。有些结果是"> 40.3"而不是实际的十进制值,所以我得到错误,

将数据类型 varchar 转换为数字时出错。

我相信错误来自"> 40.3"结果。如果我需要所有大于或等于 12.0 的值,如何调整查询以包含这些"> 40.3"值等。"> 40.3"在技术上仍然大于 12.0,但我不确定如何使用非十进制数据类型编写脚本("> 40.3 本质上是一个 VARCHAR(。

您可以使用TRY_CAST()忽略不是数字的值:

WHERE TRY_CAST(Value AS DECIMAL(6,2)) >= 12.0

如果您唯一的"范围"说明符是>,那么您可以使用replace()

WHERE TRY_CAST(REPLACE(Value, '> ', '') AS DECIMAL(6,2)) >= 12.0

但是,我建议您修改数据模型,以便有两列,一个上限和一个下限。

最新更新