如何在View中转换字符串

时间:2019-02-02 17:50:11

标签: sql sql-server

我有一个简单的视图,该视图接受一个varchar并将其转换为浮点数。

Select CAST(TRIM(Measurement) AS float) as Measurement
from MyTable
where Type = 'Some Value'

现在,该视图将列视为浮点型,但是当我尝试使用Measure = 10的where查询查询视图时,出现错误:

Error converting data type varchar to float.

我知道字符串值将始终是一个数字(我已经检查了很多次)。在产品中弹出此错误之前,我还通过多轮测试获得了此结果。我的猜测是表中还有其他一些测量结果,这些测量结果不是我的结果,而是导致此错误的原因(这些测量值在测试期间可能不存在)。

有没有一种方法可以清理查询,以便始终将结果视为浮点数?

谢谢

1 个答案:

答案 0 :(得分:1)

您显然在该列中有错误的值。您可以使用正则表达式(在大多数数据库中)或SQL Server中的try_函数找到它们。

例如:

Select Measurement
from MyTable
where Type = 'Some Value' AND try_convert(float, measurement) is null;

或者:

where type = 'Some Value' and
      not measurement ~ '^-?[0-9]*[.]?[0-9]+$'

Th ~是用于正则表达式匹配的Postgres。其他数据库具有相似的功能,但语法不同。