日期:2011-05-02 15:21:00 来源:本站整理
SQL Server2005中按列衔接字符串三种办法[MSSQL防范]
本文“SQL Server2005中按列衔接字符串三种办法[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
近来做一个项目,碰到一个在分组的情形下,将某一列的字段值(varchar范例)衔接起来的问题,近似于sum函数对int型字段值求和.若有一个表t_table,构造和数据如图1
图1
此中要按着xh字段分组,并且将每一组name字段值衔接起来.终究后果但愿如图2所示
图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防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论