如何消除 UDF 中的错误?
Posted
技术标签:
【中文标题】如何消除 UDF 中的错误?【英文标题】:How to silence errors inside a UDF? 【发布时间】:2010-11-17 20:59:59 【问题描述】:我需要编写一个 UDF,它会尝试将 varchar 转换为 bigint,如果失败则返回该 bigint 或零。问题是 - 当字符串不是有效数字时,我找不到消除强制转换错误的方法。 TRY CATCH 在函数内部不起作用,我不知道还能做什么。
【问题讨论】:
【参考方案1】:试试这个:
Create Function dbo.Convert2BigInt(@Data VarChar(100))
Returns BigInt
As
Begin
Return(Case When IsNumeric(@Data + '.0e0') = 1
Then Convert(BigInt, @Data)
Else Convert(BigInt, 0)
End)
End
【讨论】:
它有点工作,它不会给出任何错误,但如果我通过“3uytutu”它返回 3 这是不正确的。 这很奇怪。当我调用具有相同值“3uytutu”的函数时,它返回 0。我运行:Select dbo.Convert2BigInt('3uytutu') 您确定指定了 varchar 参数的大小吗?在我的代码中,我使用了值 100。如果不使用它,SQL Server 会将大小默认为 1 个字符,因此您的测试值会被截断为一个字符,即“3”并且可以安全地转换为大整数. 是的,就是这样 - 我没有 varchar 的大小 :) 它有效,我接受你的回答。谢谢!以上是关于如何消除 UDF 中的错误?的主要内容,如果未能解决你的问题,请参考以下文章