查询SQL搜索内部值

时间:2016-02-04 10:50:23

标签: sql sql-server-2012

我的数据库看起来像这样:

--------------------------------------------------------------------------|
| PKey   |   name    |   date   |  Snippet                                |  
--------------------------------------------------------------------------|
|   1    |   Harry   |2016-05-03|<menu><emp1>1</emp1><emp2>2</emp2></menu>|  
--------------------------------------------------------------------------|
|   2    |   Barry   |2016-05-03|<menu><emp1>7</emp1><emp2>0</emp2></menu>| 
--------------------------------------------------------------------------|
|   3    |   Tarry   |2016-05-01|<menu><emp1>3</emp1><emp2>6</emp2></menu>| 
--------------------------------------------------------------------------|

我正在尝试做的是在“Snippet”中搜索,如:

SELECT Pkey, Snippet.value('(/Snippet/emp2)[1]', 'varchar(max)') 
FROM *name* (NOLOCK) 
WHERE date >= '2016-05-02'
AND date <= '2016-05-04'
AND Snippet.value('(/Snippet/emp2)[1]', 'varchar(max)') >= '1'

我期望的是PKey 1因为他在日期之间而且emp 2大于1而不像PKey 2。 我仍然没有得到任何结果。 有谁知道我在做什么(或思考)错了?

先谢谢。

1 个答案:

答案 0 :(得分:1)

XQuery Path看起来不正确,因为xml中的根节点是菜单而不是片段。您可以尝试更新

的路径吗?
 Snippet.value('(/menu/emp2)[1]', 'varchar(max)')