- 浏览: 83405 次
- 性别:
- 来自: dg
-
文章分类
- 全部博客 (70)
- [随笔分类]DB(数据库) (18)
- c# (1)
- 实用参考代码 (1)
- 默认收藏夹 (9)
- [网站分类]6.读书区(技术书籍阅读心得、书籍推荐) (1)
- xml&web服务 (1)
- [随笔分类]Asp.net (18)
- C# BLOG (1)
- 技术仓库 (0)
- .net (1)
- 编程技巧 (1)
- [随笔分类].Net Framework (1)
- [随笔分类]程序人生(非技术) (1)
- [随笔分类]其他技术类 (1)
- [随笔分类]WAP (1)
- 收藏夹 (1)
- 其他 (1)
- DotNet技术 (4)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (4)
- [网站分类]7.提问区(建议在<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>中提问) (2)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (1)
- [随笔分类]Javascript & Css & Html (1)
最新评论
--方法1
--使用游标法进行字符串合并处理的示例。
--处理的数据
CREATE TABLE tb(col1 varchar(10),col2 int)
INSERT tb SELECT 'a',1
UNION ALL SELECT 'a',2
UNION ALL SELECT 'b',1
UNION ALL SELECT 'b',2
UNION ALL SELECT 'b',3
--合并处理
--定义结果集表变量
DECLARE @t TABLE(col1 varchar(10),col2 varchar(100))
--定义游标并进行合并处理
DECLARE tb CURSOR LOCAL
FOR
SELECT col1,col2 FROM tb ORDER BY col1,col2
DECLARE @col1_old varchar(10),@col1 varchar(10),@col2 int,@s varchar(100)
OPEN tb
FETCH tb INTO @col1,@col2
SELECT @col1_old=@col1,@s=''
WHILE @@FETCH_STATUS=0
BEGIN
IF @col1=@col1_old
SELECT @s=@s+','+CAST(@col2 as varchar)
ELSE
BEGIN
INSERT @t VALUES(@col1_old,STUFF(@s,1,1,''))
SELECT @s=','+CAST(@col2 as varchar),@col1_old=@col1
END
FETCH tb INTO @col1,@col2
END
INSERT @t VALUES(@col1_old,STUFF(@s,1,1,''))
CLOSE tb
DEALLOCATE tb
--显示结果并删除测试数据
SELECT * FROM @t
DROP TABLE tb
/*--结果
col1 col2
---------- -----------
a 1,2
b 1,2,3
--*/
GO
--方法2
--使用用户定义函数,配合SELECT处理完成字符串合并处理的示例
--处理的数据
CREATE TABLE tb(col1 varchar(10),col2 int)
INSERT tb SELECT 'a',1
UNION ALL SELECT 'a',2
UNION ALL SELECT 'b',1
UNION ALL SELECT 'b',2
UNION ALL SELECT 'b',3
GO
--合并处理函数
CREATE FUNCTION dbo.f_str(@col1 varchar(10))
RETURNS varchar(100)
AS
BEGIN
DECLARE @re varchar(100)
SET @re=''
SELECT @re=@re+','+CAST(col2 as varchar)
FROM tb
WHERE col1=@col1
RETURN(STUFF(@re,1,1,''))
END
GO
--调用函数
SELECT col1,col2=dbo.f_str(col1) FROM tb GROUP BY col1
--删除测试
DROP TABLE tb
DROP FUNCTION f_str
/*--结果
col1 col2
---------- -----------
a 1,2
b 1,2,3
--*/
GO
--方法3
--使用临时表实现字符串合并处理的示例
--处理的数据
CREATE TABLE tb(col1 varchar(10),col2 int)
INSERT tb SELECT 'a',1
UNION ALL SELECT 'a',2
UNION ALL SELECT 'b',1
UNION ALL SELECT 'b',2
UNION ALL SELECT 'b',3
--合并处理
SELECT col1,col2=CAST(col2 as varchar(100))
INTO #t FROM tb
ORDER BY col1,col2
DECLARE @col1 varchar(10),@col2 varchar(100)
UPDATE #t SET
@col2=CASE WHEN @col1=col1 THEN @col2+','+col2 ELSE col2 END,
@col1=col1,
col2=@col2
SELECT * FROM #t
/*--更新处理后的临时表
col1 col2
---------- -------------
a 1
a 1,2
b 1
b 1,2
b 1,2,3
--*/
--得到最终结果
SELECT col1,col2=MAX(col2) FROM #t GROUP BY col1
/*--结果
col1 col2
---------- -----------
a 1,2
b 1,2,3
--*/
--删除测试
DROP TABLE tb,#t
GO
发表评论
-
MS SQL数据库备份和恢复存储过程(加强版本)
2004-05-20 13:55 786上次写了MS SQL数据库备份和恢复存储过程详细情况见(htt ... -
求每组前2名,你有几种方法?(MS SQL2000)
2004-08-23 11:55 927create table abc( i nvarchar(10 ... -
ORDER BY排序后,表中字段相加的困惑?
2005-02-03 16:38 1021在sql server2000自带DB-pubs 运行下面的s ... -
sql server中UNION 运算符随笔(几个需要注意的地方小总结)
2005-03-03 11:35 1126UNION 运算符是将两个或更多查询的结果组合为单个结果集 ... -
局部临时表和表变量的重复创建问题随笔
2005-04-22 11:51 942今天遇到一个需求,是根据逻辑判断动态创建局部临时表 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-TRY…CATCH
2007-12-03 13:56 760Transact-SQL 代码中的错误可使用 TRY…CATC ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-数据类型
2007-12-03 14:57 795sql server2005新增加了2大数据类型: 1.大值数 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-TOP 运算符
2007-12-03 16:49 794TOP 运算符介绍:TOP 运算符在Sql Serve ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-公用表表达式(CTE)
2008-07-31 14:52 914公用表表达式是Sql Server ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-APPLY 运算符
2008-08-13 15:07 830APPLY 运算符简介: APPLY 运算符是Sql Serv ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-窗口函数(OVER)
2008-08-26 07:53 9471.简介: SQL Server 2005中的窗口函数帮助你迅 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-DDL触发器
2008-09-02 07:48 8921.简介:Sql Server2005新增加了DDL触发器。与 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-总结
2008-09-03 07:49 747Microsoft SQL Server 2005扩展了SQL ... -
sqlserver日期推算(年,季度,月,星期推算)
2008-11-19 19:20 2249DECLARE @dt datetimeSET @dt=GET ... -
sqlserver字符串拆分(split)方法汇总
2008-11-19 20:06 6943--方法0:动态SQL法declare @s varchar( ... -
sqlserver排序规则在拼音处理中的应用
2008-11-21 08:53 1083--1. 按拼音排序DECLARE @t TABLE(co ... -
sqlserver排序规则在全角与半角处理中的应用
2008-11-21 09:41 1237--1.查询区分全角与半角字符--测试数据DECLARE ...
相关推荐
标准的T-SQL提供了一些内置的聚合函数,如SUM、AVG、MAX和MIN,但它们并不支持将多个字符串合并为一个单一的字符串。在描述中提到的“Sqlserver 2014 之 自定义字符串聚合函数”正是针对这个需求而展开的讨论。 在...
- **数据合并**: 使用MERGE语句合并数据。 - **空值处理**: 如NULL的使用及其特殊处理方式。 - **数值转换**: 在不同的数据库系统中如何进行数值类型的转换。 - **数值/数学函数**: 包括基本的数学运算函数。 - **...
- **字符串串联运算符**:如`||`用于连接字符串。 - **一元运算符**:如正号(+)、负号(-)等。 - **运算符优先级**:定义了运算符执行的顺序。 #### 数据定义语言(DDL) - **创建数据库**:创建新的数据库,...
例如,Derived Column Transformation用于添加、修改或删除列,Lookup Transformation用于查找匹配值,Aggregate Transformation用于对数据进行统计汇总,以及Merge Join Transformation用于合并两个数据流等。...
- **数据库**:通过ODBC接口连接到SQL Server、MySQL等数据库系统。 - **其他格式**:如SPSS、SAS等文件格式,可以通过`foreign`包进行读取。 #### 七、数据操作 - **向量和矩阵索引**:使用方括号`[]`来提取子集...
- **使用函数**:SAS提供了丰富的内置函数,如数学函数、字符串处理函数等,可用于创建复杂的变量。 #### 六、SAS运算符和函数 SAS支持多种运算符和函数,包括但不限于: - **算术运算符**:+、-、*、/、**(幂)...