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 に答える