SQL Server XML列exists()查询
发布时间:2020-12-12 07:08:52 所属栏目:MsSql教程 来源:网络整理
导读:假设我有一个SQL Server 2005表,其xml列包含以下值: CREATE TABLE XmlTest ( XMLid int,Data xml)INSERT XMLTest VALUES ( 1,'dataitemtype v="1" /value v="12.56" //itemitemtype v="3" /value v="DEBIT" //item/data' )INSERT XMLTest VALUES ( 2,'datait
假设我有一个SQL Server 2005表,其xml列包含以下值:
CREATE TABLE XmlTest ( XMLid int,Data xml) INSERT XMLTest VALUES ( 1,'<data><item><type v="1" /><value v="12.56" /></item><item><type v="3" /><value v="DEBIT" /></item></data>' ) INSERT XMLTest VALUES ( 2,'<data><item><type v="1" /><value v="99.22" /></item><item><type v="3" /><value v="CREDIT" /></item></data>' ) INSERT XMLTest VALUES ( 3,'<data><item><type v="3" /><value v="12.56" /></item><item><type v="1" /><value v="DEBIT" /></item></data>' ) 我想测试具有类型v =“3”和值v =“DEBIT”的项元素的存在性. 我使用的exists()函数如下: SELECT * FROM XmlTest WHERE Data.exist('/data/item/type[@v=''3'']') = 1 AND Data.exist('/data/item/value[@v=''DEBIT'']') = 1 然而,这给我带回了XMLid 1和3的行. 任何人都可以概述我需要对我的WHERE子句进行哪些更改,以仅返回具有类型节点v值为3且值节点v值为“DEBIT”的项目的记录?即只用XMLid 1记录 谢谢 解决方法试试这个:SELECT * FROM XmlTest WHERE Data.exist('/data/item[type[@v=''3''] and value[@v=''DEBIT'']]') = 1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- sql-server-2008 – 错误地在表上运行了更新语句
- 设置SQL Azure规则“WINDOWS AZURE SERVICES”=
- 如何在linq中获得第二条记录到sql
- sqlserver ssis
- sql-server-2008 – 如何在SQL Server 2008中备份
- mysql 5.7.11 winx64.zip安装配置方法图文教程
- SQL Server 公用表表达式(CTE)实现递归的方法
- 如何在LINQ to Entity Framework中使用SQL通配符
- SQL Server误区30日谈 第13天 在SQL Server 2000
- sql – 如何在oracle中减去2个日期以获得小时和分
热点阅读