在 case 语句中将 ISNumeric 更改为 try_convert

Change ISNumeric to try_convert in case statement

我正在使用性能非常糟糕的旧代码,公司正在使用 SQL Server 2012。我阅读了博客,其中指出 isnumeric 性能很差,所以我正在尝试使用 try_convert 而不是 SQL Server 2012 功能。我在代码中多次看到这个语句,所以我想试一试:

Convert(float,Case Isnumeric(somecolumnvalue) when 1 then somecolumnvalue else 0.0 end

如何将此语句转换为使用 Try_convert 语句。任何人都可以帮助我以及对 isnumeric

的性能问题的任何评论

您将使用:

coalesce(try_convert(float, somecolumn_value), 0.0)

我不知道性能是否真的会更好,但代码更易于阅读并且不易出现意外问题。转换为 float 通常并不麻烦,但你确实有异常。例如,'-' "is numeric" 但在转换为 float.

时会产生错误