SQL Server-如何检查字符串是文本还是0的任何表示形式?

SQL Server-如何检查字符串是文本还是0的任何表示形式?,sql,sql-server,Sql,Sql Server,我有一个nvarchar(20)类型的“non-clean”列Col1,包含数字(整数和小数)和文本“No-Data”的各种表示形式 (例如无数据、无数据、无数据等)用于无法找到值的情况 我正在寻找一个查询,它将只获取包含任何0表示(如0,00,0.00等)或确切文本“NO-DATA”的记录 我无法找到在SQL Server 2016中使用正则表达式的方法。这应该非常简单: select (case when try_convert(float, col) = 0 then 1 else 0 e

我有一个nvarchar(20)类型的“non-clean”列Col1,包含数字(整数和小数)和文本“No-Data”的各种表示形式 (例如无数据、无数据、无数据等)用于无法找到值的情况

我正在寻找一个查询,它将只获取包含任何0表示(如0,00,0.00等)或确切文本“NO-DATA”的记录


我无法找到在SQL Server 2016中使用正则表达式的方法。

这应该非常简单:

select (case when try_convert(float, col) = 0 then 1 else 0 end) as IsZero
try\u convert()
如果转换不起作用,则返回
NULL

通常,不建议将浮点数与常量进行比较。在这种情况下,我非常确定零的所有合理表示都是精确的

如果这是一个问题,您可以:

select (case when try_convert(int, replace(col, '.', '')) = 0 then 1 else 0 end) as IsZero

当然,这将允许
0.0.0

这应该非常简单:

select (case when try_convert(float, col) = 0 then 1 else 0 end) as IsZero
try\u convert()
如果转换不起作用,则返回
NULL

通常,不建议将浮点数与常量进行比较。在这种情况下,我非常确定零的所有合理表示都是精确的

如果这是一个问题,您可以:

select (case when try_convert(int, replace(col, '.', '')) = 0 then 1 else 0 end) as IsZero

当然,这将允许
0.0.0

您可以使用检查值您可以使用语法中的微小更改来检查值-
选择(当try_convert(float,col)=0,然后选择1,否则0结束)为零
@user2633379。谢谢。语法上的细微变化-
选择(当尝试转换(float,col)=0,然后选择1,否则0结束)为IsZero
@user2633379。非常感谢。