0

我有一个过程,我想用它来搜索 xml 列并返回我搜索的值。现在我只希望它返回值本身。就像现在一样,它返回正确的预期行数,但返回值为 null!我添加了演员,但它返回相同!

关于如何让搜索到的字符串返回而不是 null 的任何想法?谢谢!

在此处输入图像描述

CREATE PROCEDURE [dbo].[FindString]
    @findString NVARCHAR(100)
AS
BEGIN

    SET NOCOUNT ON

;WITH XMLNAMESPACES (Default 'http://www.w3.org/2001/XMLSchema' )

SELECT CAST(x.value('Value[1]', 'varchar(30)') As varchar(30)) As Value

FROM dbo.XmlTable x

CROSS APPLY x.XmlDocument.nodes('/*') a(x)

WHERE XmlDocument.exist('//*/text()[contains(., sql:variable("@findString"))]') = 1

    RETURN
END


GO
4

1 回答 1

1

这行得通吗?

CREATE PROCEDURE [dbo].[FindString]
    @findString NVARCHAR(100)
AS
BEGIN

    SET NOCOUNT ON

;WITH XMLNAMESPACES (Default 'http://www.w3.org/2001/XMLSchema' )

SELECT CAST(x.value('.', 'varchar(30)') As varchar(30)) As Value

FROM dbo.XmlTable x

CROSS APPLY x.XmlDocument.nodes('//*[contains(text()[1], sql:variable("@findString"))]') a(x)

    RETURN
END


GO
于 2013-02-27T20:57:53.717 回答