SQL Server根据内容按用户输入值选择XML列

SQL Server根据内容按用户输入值选择XML列,sql,sql-server,xml,Sql,Sql Server,Xml,我正在开发一个基于sql server 2012的应用程序。 我是SQl server的新手。但要求是使用它。 我正在使用的一个表包含一个XML数据类型列。但是,该列中包含的数据可能因xml元素而异。唯一的共同点是根:例如,这是一个示例数据: <Tags> <key1>Value1</key1> <key2>Value2</key2> <key3>Value3</key3> <

我正在开发一个基于sql server 2012的应用程序。 我是SQl server的新手。但要求是使用它。 我正在使用的一个表包含一个XML数据类型列。但是,该列中包含的数据可能因xml元素而异。唯一的共同点是根:例如,这是一个示例数据:

<Tags>
    <key1>Value1</key1>
    <key2>Value2</key2>
    <key3>Value3</key3>
    <key4>Value4</key4>
    <key5>Value5</key5>
    <key6>Value6</key6>
</Tags>

价值1
价值2
价值3
价值4
价值5
价值6
我要做的是查询整个表并获取与用户发送的特定键和特定值匹配的记录


请帮助我。

听起来您需要使用一些变量来构建XQuery,是吗?因此,假设您构建了一个存储过程或某种东西,它以一对字符串参数作为键和值,您可以使用下面的示例,这样您就可以进行尝试了

DECLARE @key nvarchar(20)
DECLARE @value nvarchar(20)
SET @key = N'key5'
SET @value = N'Value5'

SELECT 
    TagValue = T1.xmlcol.value('(/Tags/*[local-name()=sql:variable("@key")])[1]', 'varchar(10)')
FROM
    dbo.T1
WHERE 
    T1.xmlcol.exist('/Tags/*[local-name()=sql:variable("@key")][text() = "Value5"]') = 1

请参阅,这将为您提供一个起点。@huMptyduMpty:通过这些示例,您知道要查询的xml元素。在我的例子中,我甚至不知道要查询哪个元素。我同意这些例子提供了一个可以做什么的线索。虽然SQLFiddle刚刚去世——希望不是因为我!但是当它备份时,它包含一个工作示例,包括上面的示例XML,您应该能够从中推断出适合您的解决方案。酷。如果你能接受答案,我将不胜感激:)