知方可补不足~sqlserver中对xml类型字段的操作
在sqlserver中有很多种数据类型,而XML数据类型是比较新奇怪的一种格式,我们平常接触的可能比较少,用的也少,而在某些场合,使用XML类型可能会使我们的开发变简单,下面就是一种情况:
表test有字段Menu,它保存的信息可能有两种方式,对标准menu,扩展menu,自定义Menu等,而这些方式所需要的键/值是不同的,有些同学会说使用Json串来存储,这当然是一种很不错的方式,但是数据库并没有这种类型,所以在查询,聚合时非常困难,这些我们想到了xml格式,它是SQLSERVER的是一种数据类型,支持查询,聚合等操作,下面我们来学习一下.
1 XML字段结构如下
<WxPaymentConfig>
<demo>zhang</demo>
<price></price>
</WxPaymentConfig>
2 查询数据,通过XML类型作为条件
SELECT *
FROM demo
WHERE Menu.value('(/WxPaymentConfig/demo)[1]', 'nvarchar(50)') = 'zhang'
3 查询数据同时对它进行统计,即执行某些聚合操作
SELECT SUM(Menu.value('(/WxPaymentConfig/price)[1]', 'decimal'))
FROM demo
WHERE Menu.value('(/WxPaymentConfig/demo)[1]', 'nvarchar(50)') = 'zhang'
结果是我们所希望看到的
aaarticlea/png;base64,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" alt="" />
知方可补不足~sqlserver中对xml类型字段的操作的更多相关文章
- 知方可补不足~sqlserver中触发器的使用
回到目录 触发器在过去的10年中,即存储过程和ado.net称霸江湖期间是那么的重要,而现在,trigger显得不是那么必要的,我们很少将复杂的业务写在SQL里,当然也会没有机会写到trigger里了 ...
- 知方可补不足~sqlserver中使用sp_who查看sql的进程
回到目录 在SQLSERVER中每个会话,即每个查询分析器窗口都会产生一个SQL进程,对于那些持续时间短的进程,它们转瞬即失,而对于持续时间比较长的,我们需要希望查看它的运行状态,就可以借助SQL提供 ...
- 知方可补不足~Sqlserver中的几把锁和.net中的事务级别
回到目录 当数据表被事务锁定后,我们再进行select查询时,需要为with(锁选项)来查询信息,如果不加,select将会被阻塞,直到锁被释放,下面介绍几种SQL的锁选项 SQL的几把锁 NOLOC ...
- 知方可补不足~Sqlserver中的几把锁和.net中的事务级别 回到目录
当数据表被事务锁定后,我们再进行select查询时,需要为with(锁选项)来查询信息,如果不加,select将会被阻塞,直到锁被释放,下面介绍几种SQL的锁选项 SQL的几把锁 NOLOCK(不加锁 ...
- 知方可补不足~Sqlserver发布订阅与sql事务的关系
回到目录 前几讲说了一下通过sqlserver的发布与订阅来实现数据的同步,再通过EF这个ORM架构最终实现架构系统的读写分离,而在使用发布与订阅来实现数据同步时,需要我们注意几点,那就是当操作被使用 ...
- 知方可补不足~SQL中的count命令的一些优化措施(百万以上数据明显)
回到目录 SQL中对于求表记录总数的有count这个聚合命令,这个命令给我们感觉就是快,比一般的查询要快,但是,当你的数据表记录比较多时,如百万条,千万条时,对于count来说,就不是那么快了,我们需 ...
- 知方可补不足~SQL2008中的发布与订阅模式~续
回到目录 上一回介绍了如何在sql2008中建立一个数据库的发布者,今天来说一下如何建立一个订阅者,其实订阅者也是一个数据库,而这个数据库是和发布者的数据结构相同的库,它们之间通过SQL代理进行数据上 ...
- 知方可补不足~SqlServer自动备份数据库及清理备份文件
回到目录 对于SQLSERVER这个关系型数据库来说,为了保持数据的安全,备份是必须的,当你的一个误操作导致数据丢失,这可能是灾难性的,是不被允许发生的,这时,我们必须要做好定期的备份工作,如我们可以 ...
- 知方可补不足~SqlServer连接的复用MultipleActiveResultSets
回到目录 MultipleActiveResultSets可以使数据库连接复用,但当你上了moebius这种集群工具后,这个选项不能开启(默认是false),当你使用EF等ORM工具时,这个选项会默认 ...
随机推荐
- 面试问题整理笔记系列 一 Java容器类
虚线框表示接口:实线框表示实体类:粗线框表示最常用的实体类:虚线箭头表示实现了这个接口:实现箭头表示类可以制造箭头 ...
- Java集合源码分析(一)
Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组.链表.栈.队列.集合.哈希表等.学习Java集合框架下大致可以分为如下五个部分:List列表.Set集合.Map映射.迭 ...
- 使用ADO.NET执行SQL脚本
public void ExecuteSql(SqlConnection connection, string sqlFile) { string sql = ""; using ...
- Java基础学习小记--多态
题外话:总结了多年的学习心得,不得不说,睡眠是一个学习者的必需品!所谓"早起毁一天"不是没有道理哪,特别对Coders来说,有几天不是加班到夜里.好吧,我承认对于初学Java的我, ...
- Guacamole之配置Guacamole(五)
摘要 在网上看到一篇Guacamole官方手册的翻译,但是找不到后续,于是想自己也翻译几篇,有时间的话,会尽量多翻译一些. 原文地址:http://guacamole.incubator.apache ...
- bootstrap源码分析之form、navbar
一.表单(Form) 源码文件:_form.scssmixins/_form.scss 1.按层次结构分:form-group -> form-control/input-group/form- ...
- Converse.js – 开源的 XMPP 聊天客户端
Converse.js 是一个运行在浏览器的免费和开源的聊天客户端.它可以集成到任何网页.类似于 Facebook 的聊天,它也支持多用户聊天室.Converse.js 可以连接到任何可访问的 XMP ...
- Web 前沿——HTML5 Form Data 对象的使用
XMLHttpRequest Level 2 添加了一个新的接口——FormData.利用 FormData 对象,我们可以通过 JavaScript 用一些键值对来模拟一系列表单控件,我们还可以使用 ...
- checkbox全选,反选,取消选择 jquery
checkbox全选,反选,取消选择 jquery. //checkbox全部选择 $(":checkbox[name='osfipin']").each(function(){ ...
- there is no spatial analyst license available or enabled
解决方案:右击license—属性