急急急 SqlServer 中的xml类型

DiscussQuestions 2009-07-27 11:10:05
我现在数据结构中有一个字段的类型是xml类型的!
我在查询的时候需要按照这个xml字段查询,但是xml和varchar类型的不能用 =
该如何按照xml类型的查询?

如:select * from TeamGuest where Visas = '<Visas><Visa ID="000004" /><Visa ID="0" /></Visas>'

其中Visas是xml类型的

急急急,在线等待!
...全文
128 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangCK 2009-07-27
  • 打赏
  • 举报
回复
如果是判断元素Visa的ID属性是否有000004和0
用xml类型的exist方法

select * from TeamGuest
where Visas.exist('//Visa[@ID="000004" or @ID="0"]')=1
liangCK 2009-07-27
  • 打赏
  • 举报
回复
不应该用xml类型与varchar类型比较

<Visas> <Visa ID="000004" /> <Visa ID="0" /> </Visas>



<Visas> <Visa ID="000004" ></Visa> <Visa ID="0" ></Visa></Visas>

在XML中是意思是相同的,但字符串比较.就不等的.
jinjazz 2009-07-27
  • 打赏
  • 举报
回复
select * from TeamGuest where cast(Visas as varchar(max)) =
' <Visas> <Visa ID="000004" /> <Visa ID="0" /> </Visas>'
helanye 2009-07-27
  • 打赏
  • 举报
回复
学习。
htl258_Tony 2009-07-27
  • 打赏
  • 举报
回复
学习.
ChinaJiaBing 2009-07-27
  • 打赏
  • 举报
回复

exist方法
显然,exist方法是一个用于判断指定XML型结果集中是否存在指定节点的方法。该方法返回的结果包括两种值,即1(当XML型结果集中至少包含一个查询节点时)或0(当XML型查询集中没有包含指定节点时)。

该方法的使用语法如下所示:

exist(‘XQeuryExpression’)

其中XQeuryExpression代表指定的XML型查询语句,该查询语句将生成一组XML型结果集。

【示例24】exist方法的使用。

完整的设计过程如下。

(1) 下面依次来检查数据表xml_Categories中的字段CategoryInfo中存在的节点情况,在【查询编辑器】中输入下面的Transact-SQL脚本:

USE Northwind

GO

SELECT CategoryInfo.exist('/CategoryInfo/CategoryName') AS 是否存在CategoryName节点,

CategoryInfo.exist('/CategoryInfo/Description') AS 是否存在Description节点,

CategoryInfo.exist('CategoryName/Description') AS 节点CategoryName下是否存在Description节点

FROM xml_Categories


fwacky 2009-07-27
  • 打赏
  • 举报
回复

select * from TeamGuest
where Visas.exist('//Visa[@ID="000004" or @ID="0"]')=1
上面应该可以吧!

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧