SQL:选择具有XML标记的记录

时间:2016-09-09 18:24:35

标签: sql sql-server xml

我想问一下如何只选择那些包含XML列的表中的记录,这些记录在XML中包含一个特定的标记。

表名是:Searchindex 带XML的列:记录 XML元素:

标签仅包含在少数记录中,而不是全部记录。

XML示例结构:

<Record>
  <ppn>asasaa</ppn>
  <NAM>asdad</NAM>  
  <HasProduct>True</HasProduct>    << this tag is only on certain records
  <ART>asdadsa</ART>  
  <PublicationDate>06/21/1999</PublicationDate>
  <PSal>1305</PSal>
  <MSal>14</MSal>
  <Xpos>False</Xpos>
</Record>

任何例子都会很棒。

非常感谢!

2 个答案:

答案 0 :(得分:2)

以下是示例:

CREATE TABLE T
(
    ID int,
    X xml
)

INSERT INTO T VALUES
(1, '<Record>
  <ppn>asasaa</ppn>
  <NAM>asdad</NAM>  
  <HasProduct>True</HasProduct>
  <ART>asdadsa</ART>  
  <PublicationDate>06/21/1999</PublicationDate>
  <PSal>1305</PSal>
  <MSal>14</MSal>
  <Xpos>False</Xpos>
</Record>'),
(2, '<Record>
  <Xpos>False</Xpos>
</Record>')

SELECT *
FROM T
WHERE X.exist('Record/HasProduct')=1

/*Tag with value=True*/
SELECT *
FROM T
WHERE X.exist('Record/HasProduct[text()="True"]')=1

答案 1 :(得分:0)

尝试

SELECT * FROM table1
WHERE x REGEXP '<HasProduct>\w+</HasProduct>'

\ w可以更改为您想要的任何搜索值

相关问题