【问题标题】:How to check if items of XML string already exist in a SQL Server table?如何检查 SQL Server 表中是否已存在 XML 字符串项?
【发布时间】:2014-09-22 09:42:23
【问题描述】:

我有一个较长的存储过程,其中一个输入参数是一个包含关键字/标签的 xml 字符串(格式为 xml,使用 SQL Server 2008)。我需要检查每个标签是否已经存在于表中,如果不存在,则将它们插入那里。

到目前为止,我有以下几行,但我的问题是如何在此处编写 Where 子句(@tag 只是用于演示的占位符)。我该如何更改?

我的 SQL(仅相关部分):

IF NOT EXISTS
(
    SELECT      * 
    FROM        RC_Tags 
    WHERE       tag = @tag
)
    BEGIN

        INSERT INTO RC_Tags
        (
                tag
        )
        SELECT  ParamValues.tag.value('.', 'varchar(255)')
        FROM    @xmlTags.nodes('/tags/tag') AS ParamValues(tag)

    END

【问题讨论】:

    标签: sql sql-server xml select insert


    【解决方案1】:

    你可以使用 NOT EXISTS 并像这样在查询中使用它 -

    INSERT INTO RC_Tags
    (
            tag
    )
    SELECT ParamValues.tag.value('.', 'varchar(255)')
    FROM @xmlTags.nodes('/tags/tag') AS ParamValues(tag)
    WHERE NOT EXISTS (
            SELECT tag
            FROM RC_Tags
            WHERE tag = ParamValues.tag.value('.', 'varchar(255)')
            )
    

    并且不需要添加if条件。

    【讨论】:

    • 这是完美的——正是我想要的。非常感谢 - 我会尽快接受。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 2010-11-25
    • 2010-09-13
    相关资源
    最近更新 更多