经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库运维 » MS SQL Server » 查看文章
mssql sqlserver for xml EXPLICIT 用法详解说明
来源:cnblogs  作者:Adeal2008  时间:2018/9/25 19:52:35  对本文有异议


摘要:
下文通过举例的方式,详细说明"for xml EXPLICIT"关键字的用法,如下所示:
实验环境:sql server 2008 R2



EXPLICIT的功能:将数据表采用特定的形式返回xml数据。
 

  1. create table test
  2. (keyId int identity,
  3. sort nvarchar(10),
  4. info nvarchar(30)
  5. )
  6. insert into test(sort,info)
  7. values('衣服','A号'),
  8. ('衣服','B号'),('衣服','C号'),
  9. ('鞋子','D'),('鞋子','E'),
  10. ('鞋子','F')
  11. go
  12.  
  13. ---使用explicit模式查询数据,必须指定特定的格式,sql脚本会根据特定模式生成相应的xml
  14. ---使用explicit模式查询数据注意事项:
  15. /*
  16. 返回第一列必须为:当前元素的行号,列名必须为"Tag",数据类型需为整型,
  17. 数值为1代表第一层元素,数值为2代表第二层元素
  18. 返回第二列为父级元素的编号,,列名必须为"Parent" ,Tag同Parent之间形成一个上下级的关系,
  19. parent中必须有元素为null或0,代表顶层元素。
  20. */
  21. -----例:
  22.  
  23. SELECT
  24. 1 AS Tag,--Tag 列必须存在,1表示第一层节点
  25. NULL AS Parent,--Parent 列必须存在, null代表第一级别
  26. 3 AS [node!1]
  27. --"node!1"表示根节点 此种形式代表的是根节点。
  28. --"node" 节点标签名称 元素名称
  29. --"1" 节点层次
  30. FOR XML EXPLICIT
  31. ---------------------------------------------------------
  32. /*
  33. [node!2!id!ELEMENT]
  34. node 代表的是节点名称;
  35. 2代表的节点层次;
  36. keyId 表示的是元素名称;.
  37. ELEMENT 选项表示向 <node> 元素添加了
  38. <keyId>元素子级,而不是添加属性
  39. */
  40.  
  41. SELECT
  42. 1 AS Tag,
  43. NULL AS Parent,
  44. 8 AS [root!1],
  45. 88 AS [node!2!id!ELEMENT]
  46. FOR XML EXPLICIT
  47. ---------------------
  48. SELECT
  49. 1 AS Tag,
  50. NULL AS Parent,
  51. 8 AS [root!1],
  52. null AS [node!2!keyId!ELEMENT]
  53. UNION ALL
  54. SELECT
  55. 2 AS Tag,--表示第二层
  56. 1 AS Parent,--指向父节点 tag=1
  57. NULL ,
  58. keyId
  59. FROM test ---WHERE keyId=1
  60. FOR XML EXPLICIT
  61. SELECT
  62. 1 AS Tag,
  63. NULL AS Parent,
  64. 8 AS [root!1],
  65. null AS [node!2!keyId!ELEMENT],
  66. null AS [nodeExtend!3!sort!ELEMENT]
  67. UNION ALL
  68. SELECT
  69. 2 AS Tag,--表示第二层
  70. 1 AS Parent,--指向父节点 tag=1
  71. NULL ,
  72. keyId,
  73. null
  74. FROM test WHERE keyId=1
  75. union all
  76. SELECT
  77. 3 AS Tag,--表示第二层
  78. 2 AS Parent,--指向父节点 tag=1
  79. NULL ,
  80. keyId,
  81. sort
  82. FROM test WHERE keyId=2
  83.  
  84. FOR XML EXPLICIT
  85. go
  86. truncate table test
  87. drop table test

转自:http://www.maomao365.com/?p=7463

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号