当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:21:00  来源:本站整理

SQL Server2005中按列衔接字符串三种办法[MSSQL防范]

赞助商链接



  本文“SQL Server2005中按列衔接字符串三种办法[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

近来做一个项目,碰到一个在分组的情形下,将某一列的字段值(varchar范例)衔接起来的问题,近似于sum函数对int型字段值求和.若有一个表t_table,构造和数据如图1

SQL Server2005中按列衔接字符串三种办法
图1

此中要按着xh字段分组,并且将每一组name字段值衔接起来.终究后果但愿如图2所示

SQL Server2005中按列衔接字符串三种办法
图2

表中的th字段值关于每一个xh值是唯一的,也是有限的,也就是说,关于一个xh值,th的值不会太多,如最多是10个(从1至10).

以上需求终究想了三种办法来办理这个问题.

1、改正表构造

假如是新的项目,可以考虑改正一下表的构造.假如t_table的构造改正以下:

xh     value1 value2   value3    value4     .... ....                 value10
   0001 123456 654321 456789  
   0002 12abcd 4d2r343 343dfd 
   0003 abcde3 132323

这种办法将value的值纵向改成横向,也就是说,按每一个xh值,将value字段的值按逆时针旋转了90度. 但这种办法要有一个前提,就是假定xh的每一个值所对应的value值不会太多,如上面不超越10个,这样才有大概成立有限个字段.假如按着上面的字段构造,只需求将这些字段加一同便可以了,也不用分组.以下所示:

select xh , (value1 + value2 + value3 +  + value10) as value from t_table

但这种办法至少有以下三个缺陷:

1. 需求改正表构造,这关于已经举行很长时间或是已经上线的项目产不实用

2. 对每一个xh字段的value取值数有限制,假如太多,就得成立很多字段.这样性能会降低.

3. 这样做固然查询简单,但假如需求对每一个xh的差别值频繁改正或加入新的值时,假如把它们都放到一行,简单因为行锁而降低性能.


  以上是“SQL Server2005中按列衔接字符串三种办法[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Windows 搭配 IIS7 PHP MySQL 环境
  • sqlserver索引的原理及索引成立的注意事项小结
  • SQL Join的一些总结(实例)
  • SQL的Join利用图解教程
  • SQL中JOIN和UNION辨别、用法及示例介绍
  • 关于SQL中CTE(公用表表达式)(Common Table Expression)的总结
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .