SQL Server 上的高效 ISNUMERIC() 替换?

2023-11-24

所以我花了 5 个小时解决了一个问题,结果发现这个问题不仅是由于老不可靠 ISNUMERIC但看起来我的问题只出现在 UDF 其中ISNUMERIC被宣布WITH SCHEMABINDING并在存储过程中调用(我需要做很多工作才能将其提炼成测试用例,但我的第一个需要是将其替换为可靠的东西)。

关于良好、有效的替代品的任何建议ISNUMERIC()。显然确实需要有一些变化int, money等等,但是人们在使用什么(最好是在 T-SQL 中,因为在这个项目中,我仅限于 SQL Server,因为这是一个大容量的 SQL Server 到 SQL Server 数据处理任务)?


如果您正在运行 SQL Server 2012,则可以使用 T-SQL 函数 TRY_CAST() 或 TRY_CONVERT(),正如 Bacon Bits 在评论中提到的那样:

SELECT CASE WHEN TRY_CAST('foo' AS INT) IS NULL THEN 0 ELSE 1 END

SELECT CASE WHEN TRY_CAST(1 AS INT) IS NULL THEN 0 ELSE 1 END

如果您使用的是 SQL 2008 R2 或更早版本,则必须使用 .NET CLR 函数并包装 System.Decimal.TryParse()。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server 上的高效 ISNUMERIC() 替换? 的相关文章

随机推荐