解析SQL Server 2005 溢用之:合并列值
来源:互联网 发布:java windows界面开发 编辑:程序博客网 时间:2024/05/16 05:12
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 问题描述:无论是在SQL 2000, 还是在 SQL 2005 中,都没有提供字符串的聚合函数, 所以, 当我们在处理下列要求时,会比较麻烦: 有表tb, 如下:id value----- ------1 aa1 bb2 aaa2 bbb2 ccc 需要得到结果:id values------ -----------1 aa,bb2 aaa,bbb,ccc 即, group by id, 求 value 的和(字符串相加) 创建处理函数CREATE FUNCTION dbo.f_str(@id int)RETURNS varchar(8000)ASBEGIN DECLARE @r varchar(8000) SET @r = '' SELECT @r = @r + ',' + value FROM tb WHERE id=@id RETURN STUFF(@r, 1, 1, '')ENDGO -- 调用函数SELECt id, values=dbo.f_str(id) FROM tb GROUP BY id 示例数据 DECLARE @t TABLE(id int, value varchar(10))INSERT @t SELECT 1, 'aa'UNION ALL SELECT 1, 'bb'UNION ALL SELECT 2, 'aaa'UNION ALL SELECT 2, 'bbb'UNION ALL SELECT 2, 'ccc' -- 查询处理SELECT *FROM( SELECT DISTINCT id FROM @t)AOUTER APPLY( SELECT [values]= STUFF(REPLACE(REPLACE( ( SELECT value FROM @t N WHERE id = A.id FOR XML AUTO ), '<N value="', ','), '"/>', ''), 1, 1, ''))N /*--结果id values----------- ----------------1 aa,bb2 aaa,bbb,ccc (2 行受影响)--*/
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
很多人可能发现,无论是在SQL 2000, 还是在 SQL 2005 中,都没有提供字符串的聚合函数, 所以, 当我们在处理下列要求时,会比较麻烦, 但在 SQL Server 2005中, 这种情况得到了改善, 我们可以轻松地完成这项处理。
1. 旧的解决方法
2. 新的解决方法
注: 合并与分拆的CLR, SQL2005的示例中有:
在安装SQL 2005的示例后,默认安装目录为 drive:/Program Files/Microsoft SQL Server/90/Samples/Engine/Programmability/CLR/StringUtilities中。
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script><script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 解析SQL Server 2005 溢用之:合并列值
- 【交流】SQL 2005溢用之:合并列值
- 【交流】SQL 2005溢用之:合并列值
- SQL 2005溢用之:合并列值
- 【交流】SQL 2005溢用之:合并列值
- 转:邹建--SQL 2005溢用之:合并列值
- 【交流】SQL 2005溢用之:合并列值
- 【交流】SQL 2005溢用之:合并列值
- 【交流】SQL 2005溢用之:合并列值
- 【交流】SQL 2005溢用之:合并列值
- 【交流】SQL 2005溢用之:合并列值
- 【交流】SQL 2005溢用之:合并列值
- 【交流】SQL 2005溢用之:合并列值
- 【交流】SQL 2005溢用之:合并列值
- 【交流】SQL 2005溢用之:合并列值
- 【交流】SQL 2005溢用之:合并列值
- 【交流】SQL 2005溢用之:合并列值
- 【交流】SQL 2005溢用之:合并列值
- asp读sql数据时出现乱码问题的解决方法
- 下拉框联动
- 设计之美——极限反射之包装器
- 教你如何提高SQL Server 2000 的性能?
- JS版常见问题(一)层遇到select框时?
- 解析SQL Server 2005 溢用之:合并列值
- 破解网页禁止鼠标右键的技巧
- 解析:查询分析器不能单步调试的的原因
- Javascript正则表达式测试网页
- 通过分析SQL语句的执行计划优化SQL(五)
- 用oop的方法设计js脚本
- 打造SQL Server2000的安全策略
- VML实现的饼图(JavaScript类封装)
- SQL数据库应聘人员面试时经常被问的问题