declare @XuZuoZhe nvarchar(200)
set @XuZuoZhe = N'Tom'
select a.id,a.BookName
from dbo.book a left join dbo.ChuBanShe b on a.ChuBanShe_id = b.id
where a.neirong.exist('//序/作者/姓名/text() = sql:variable("@XuZuoZhe")') = 1xml类型字段neirong中根本就没有//序/作者/姓名是Tom,正常应该没有记录显示,
但现在把所有记录都列出来了,a.neirong.exist('//序/作者/姓名/text() = sql:variable("@XuZuoZhe")') = 1根本
就没有起到作用,请问大家这是怎么回事,谢谢!!!
set @XuZuoZhe = N'Tom'
select a.id,a.BookName
from dbo.book a left join dbo.ChuBanShe b on a.ChuBanShe_id = b.id
where a.neirong.exist('//序/作者/姓名/text() = sql:variable("@XuZuoZhe")') = 1xml类型字段neirong中根本就没有//序/作者/姓名是Tom,正常应该没有记录显示,
但现在把所有记录都列出来了,a.neirong.exist('//序/作者/姓名/text() = sql:variable("@XuZuoZhe")') = 1根本
就没有起到作用,请问大家这是怎么回事,谢谢!!!
select '<f><e>1</e><e>2</e></f>' union all
select '<f><e>2</e><e>5</e></f>' union all
select '<f><e>4</e><e>5</e></f>' declare @XuZuoZhe nvarchar(200)
set @XuZuoZhe = N'5'select * from tb where name.exist('//e[.=sql:variable("@XuZuoZhe")]')=1/*
name
-----------------------
<f><e>2</e><e>5</e></f>
<f><e>4</e><e>5</e></f>
对于exist方法来说, 你的写法,没有语法错误的话, 结果恒为真。
正确的写法应该是
select a.id,a.BookName
from dbo.book a left join dbo.ChuBanShe b on a.ChuBanShe_id = b.id
where a.neirong.exist('//序/作者/姓名[text() = sql:variable("@XuZuoZhe")]') = 1