我在 SQL Server 2008 上运行。我正在选择列类型 varchar 并将每个值转换为 XML 类型。但是,varchar 值可能并不总是正确的 XML 格式。如果不是正确的 XML 格式,我需要打印出“ERROR”然后继续。问题是我不确定如何处理转换错误。尝试在我的选择周围使用 TRY-CATCH,但是当遇到错误时会停止选择。我已经求助于创建一个函数来检查从 varchar 到 XML 的转换是否有效,并且如果转换导致错误,则需要该函数返回 null。我该怎么做?
这是我要转换的数据的非常简化的版本
select dbo.isxml(val)
from (VALUES
('<\fewafeawf'),
('<XML><STUFF DATA="TEST" /></XML>'),
('<XML>efaweff')) X(val)
这就是我现在拥有的功能。如果转换失败,无法弄清楚如何调整它以返回 null
create function dbo.isxml(@NT varchar(max)) returns xml
as
begin
declare @output xml
set @output = cast(@NT as xml)
return @output
end
go
我想要的输出是
NULL
<XML><STUFF DATA="TEST" /></XML>'
NULL
尝试使用 TRY-CONVERT 函数,但这是针对 sql server 2012 的。尝试在函数中使用 TRY-CATCH 语句,但在 UDF 函数中不能有 TRY-CATCH 语句。考虑过在过程中使用过程和 try-catch,但我并没有真正做任何更新或插入,所以在这种情况下,过程看起来并不是我应该使用的。不知道如何处理。
任何帮助都会很棒!谢谢!