回到目录

在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类型字段的操作的更多相关文章

  1. 知方可补不足~sqlserver中触发器的使用

    回到目录 触发器在过去的10年中,即存储过程和ado.net称霸江湖期间是那么的重要,而现在,trigger显得不是那么必要的,我们很少将复杂的业务写在SQL里,当然也会没有机会写到trigger里了 ...

  2. 知方可补不足~sqlserver中使用sp_who查看sql的进程

    回到目录 在SQLSERVER中每个会话,即每个查询分析器窗口都会产生一个SQL进程,对于那些持续时间短的进程,它们转瞬即失,而对于持续时间比较长的,我们需要希望查看它的运行状态,就可以借助SQL提供 ...

  3. 知方可补不足~Sqlserver中的几把锁和.net中的事务级别

    回到目录 当数据表被事务锁定后,我们再进行select查询时,需要为with(锁选项)来查询信息,如果不加,select将会被阻塞,直到锁被释放,下面介绍几种SQL的锁选项 SQL的几把锁 NOLOC ...

  4. 知方可补不足~Sqlserver中的几把锁和.net中的事务级别 回到目录

    当数据表被事务锁定后,我们再进行select查询时,需要为with(锁选项)来查询信息,如果不加,select将会被阻塞,直到锁被释放,下面介绍几种SQL的锁选项 SQL的几把锁 NOLOCK(不加锁 ...

  5. 知方可补不足~Sqlserver发布订阅与sql事务的关系

    回到目录 前几讲说了一下通过sqlserver的发布与订阅来实现数据的同步,再通过EF这个ORM架构最终实现架构系统的读写分离,而在使用发布与订阅来实现数据同步时,需要我们注意几点,那就是当操作被使用 ...

  6. 知方可补不足~SQL中的count命令的一些优化措施(百万以上数据明显)

    回到目录 SQL中对于求表记录总数的有count这个聚合命令,这个命令给我们感觉就是快,比一般的查询要快,但是,当你的数据表记录比较多时,如百万条,千万条时,对于count来说,就不是那么快了,我们需 ...

  7. 知方可补不足~SQL2008中的发布与订阅模式~续

    回到目录 上一回介绍了如何在sql2008中建立一个数据库的发布者,今天来说一下如何建立一个订阅者,其实订阅者也是一个数据库,而这个数据库是和发布者的数据结构相同的库,它们之间通过SQL代理进行数据上 ...

  8. 知方可补不足~SqlServer自动备份数据库及清理备份文件

    回到目录 对于SQLSERVER这个关系型数据库来说,为了保持数据的安全,备份是必须的,当你的一个误操作导致数据丢失,这可能是灾难性的,是不被允许发生的,这时,我们必须要做好定期的备份工作,如我们可以 ...

  9. 知方可补不足~SqlServer连接的复用MultipleActiveResultSets

    回到目录 MultipleActiveResultSets可以使数据库连接复用,但当你上了moebius这种集群工具后,这个选项不能开启(默认是false),当你使用EF等ORM工具时,这个选项会默认 ...

随机推荐

  1. 软件项目发展历史<人月神话>这本书好

    几乎是计算机软件开发的发展历史     人月神话,增加人手并不一定能提高开发速度. 原因在于,有些任务是无法分解的,存在先后顺序.无法同步进行. 增加人手,增加的是沟通成本,相互牵制.可以分解的任务就 ...

  2. Java经典实例:纪元秒和本地日期时间互换

    Java版本:1.8开始 import java.time.Instant; import java.time.ZoneId; import java.time.ZonedDateTime; /** ...

  3. C# 如何实现带消息数的App图标

    上次写了一篇博文,但是每次更新图标时,桌面会闪烁(刷新),有博友说人家的图标都不会刷新,还能动画.我想了一下,如果要达到这个效果,可以用Form来实现,就是在Form中嵌入一个图片,然后用一个labe ...

  4. 你应该知道的10个奇特的 HTML5 单页网站

    网页设计师努力寻找新的方式来展现内容.其中一个大的趋势是单页网站,现在被世界上的一些大的品牌广泛采用,使用它们来为用户提供一个快速,干净和简单的而且​​美丽的网站. 下面是10个令人惊叹的单页 H​​ ...

  5. HTML5夜空烟花绽放动画效果

    模板描述:HTML5夜空烟花绽放动画效果基于HTML5 canvas制作,模拟夜空烟花绽放动画效果,烟花会在夜空打出贺词,有新年快乐.合家幸福.万事如意.心想事成.财源广进等,文字可以自定义,做成各种 ...

  6. 如何使用代码或脚本启用SharePoint的备用语言

    SP的多语言,需要安装语言包,然后手工去sharepoint下启动备用语言,如下图: [网站操作]-[语言设置]: 方法一:采用powershell处理 在很多项目情况下,需要用代码进行备用语言启动. ...

  7. SharePoint 2013 VSS 编写器

    Windows Server 包含的 VSS 是提供内置卷影复制功能的基础结构.VSS 创建的卷影副本扩展了存储管理员的磁带备份存档解决方案,提供可轻松.有效创建和还原的高保真时间点副本,从而帮助简化 ...

  8. Hbase Java API详解

    HBase是Hadoop的数据库,能够对大数据提供随机.实时读写访问.他是开源的,分布式的,多版本的,面向列的,存储模型. 在讲解的时候我首先给大家讲解一下HBase的整体结构,如下图: HBase ...

  9. IOS 四舍五入 进一法 去尾法

    float numberToRound; int result; numberToRound = 4.51; result = (int)roundf(numberToRound); NSLog(@& ...

  10. UITableView代理方知多少+执行顺序

    一.前言 iOS中UITableView是最常用的一个控件.看了一下UITableView的代理:UITableViewDelegate 和 UITableViewDataSource.其中UITab ...