xquery按列查询xml
大家好,请问在查询一个上万行的xml表中,表dbo.xmark有两列,其中第一列NAME,类型为nvarchar(20),第二列是value,类型为xml。
是先把每一行的xml文件读出来放在一个临时变量@x中,然后对@x执行query呢,还是对整个value列执行某种操作就能行?
DECLARE @x xml
DECLARE @y int =0
while @y<1
BEGIN
select @x = value from xmark1_0_4
where name = 't''+right(cast(1000000+@y as nvarchar),5)+'''
SELECT @x.query('/site/people/person[@id=''person0'']')
set @y = @y +1
END
GO
<site>
<people>
<person id="person0">
<name>tom</name>
</person>
</people>
</site>
DROP TABLE #xmark
go
CREATE TABLE #xmark(NAME NVARCHAR(20), [value] XML)
INSERT #xmark ( NAME, value )
SELECT 'test', N'
<site>
<people>
<person id="person0">
<name>tom</name>
</person>
</people>
</site>
' UNION ALL
SELECT 'noboday', N'
<site>
<people>
<person id="person1">
<name>tom</name>
</person>
</people>
</site>
'
--sql:
SELECT name FROM #xmark
WHERE [value].exist('/site/people/person[@id="person0"]') = 1
/*
name
test
*/