如何检查SQL Server表中是否已经存在XML字符串项?
我有一个较长的存储过程,其中一个输入参数是包含关键字/标记的xml字符串(使用SQL Server 2008格式化为如何检查SQL Server表中是否已经存在XML字符串项?,sql,sql-server,xml,select,insert,Sql,Sql Server,Xml,Select,Insert,我有一个较长的存储过程,其中一个输入参数是包含关键字/标记的xml字符串(使用SQL Server 2008格式化为xml)。我需要检查这些标记中的每一个是否已经存在于表中,如果不存在,则将它们插入表中 到目前为止,我有以下几行代码,但我的问题是如何在这里编写Where子句(@tag只是一个用于演示的占位符)。我该如何改变这一点 我的SQL(仅相关部分): IF NOT EXISTS ( SELECT * FROM RC_Tags WHERE
xml
)。我需要检查这些标记中的每一个是否已经存在于表中,如果不存在,则将它们插入表中
到目前为止,我有以下几行代码,但我的问题是如何在这里编写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
你可以在你的查询中这样使用它-
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条件。这是完美的-正是我想要的。非常感谢-我会尽快接受。:)