如何消除 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 中的错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何消除 FPDF 中的这个错误?

如何消除程序中的链接器错误?

如何消除 Flutter BLOC 模式中的“为空错误”?

如何消除axios中的控制台错误?

如何使用 Angular 消除 Spring Boot 中的 CORS 错误? [复制]

如何在转换 timedelta 变量时消除 pandas 中的错误?