[sql server] 合并字符串

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 本文转载:http://blog.csdn.net/leamonjxl/article/details/7042317 很实用的帖子,收藏学习。。。。。。。 /*标题:按某字段合并字符串之一(简单合并) 作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 时间:2008-11-06 地点:广东深圳 描述:将如下形式的数据按id字段合并value字段。

本文转载:http://blog.csdn.net/leamonjxl/article/details/7042317

 

很实用的帖子,收藏学习。。。。。。。
  /* 标题:按某字段合并字符串之一(简单合并)
 

作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)
 时间:2008-11-06
 地点:广东深圳
 
描述:将如下形式的数据按id字段合并value字段。
 id    value
 ----- ------
 1     aa
 1     bb
 2     aaa
 2     bbb
 2     ccc
 需要得到结果:
 id     value
 ------ -----------
 1      aa,bb
 2      aaa,bbb,ccc
 即:group by id, 求 value 的和(字符串相加)
 
*/
  -- 1、sql2000中只能用自定义的函数解决
  create  table tb(id  int, value  varchar( 10))
  insert  into tb  values( 1' aa ')
  insert  into tb  values( 1' bb ')
  insert  into tb  values( 2' aaa ')
  insert  into tb  values( 2' bbb ')
  insert  into tb  values( 2' ccc ')
  go
 
create  function dbo.f_str( @id  int
returns  varchar( 100)
  as
  begin
      declare  @str  varchar( 1000)
      set  @str  =  ''
      select  @str  =  @str  +  ' , '  +  cast(value  as  varcharfrom tb  where id  =  @id
      set  @str  =  right( @str ,  len( @str-  1)
      return  @str
  end
  go
 
-- 调用函数
  select id , value  = dbo.f_str(id)  from tb  group  by id
 
drop  function dbo.f_str
  drop  table tb
 

-- 2、sql2005中的方法
  create  table tb(id  int, value  varchar( 10))
  insert  into tb  values( 1' aa ')
  insert  into tb  values( 1' bb ')
  insert  into tb  values( 2' aaa ')
  insert  into tb  values( 2' bbb ')
  insert  into tb  values( 2' ccc ')
  go
 
select id,  [ value ]  =  stuff(( select  ' , '  +  [ value ]  from tb t  where id  = tb.id  for xml path( '')) ,  1 ,  1 ,  '')
  from tb
  group  by id
 
drop  table tb
 

-- 3、使用游标合并数据
  create  table tb(id  int, value  varchar( 10))
  insert  into tb  values( 1' aa ')
  insert  into tb  values( 1' bb ')
  insert  into tb  values( 2' aaa ')
  insert  into tb  values( 2' bbb ')
  insert  into tb  values( 2' ccc ')
  go
  declare  @t  table(id  int,value  varchar( 100)) -- 定义结果集表变量
  -- 定义游标并进行合并处理
  declare my_cursor  cursor local  for
  select id , value  from tb
  declare  @id_old  int ,  @id  int ,  @value  varchar( 10) ,  @s  varchar( 100)
  open my_cursor
  fetch my_cursor  into  @id ,  @value
  select  @id_old  =  @id ,  @s = ''
  while  @@FETCH_STATUS  =  0
  begin
      if  @id  =  @id_old
         select  @s  =  @s  +  ' , '  +  cast( @value  as  varchar)
      else
        begin
          insert  @t  values( @id_old ,  stuff( @s, 1, 1, ''))
          select  @s  =  ' , '  +  cast( @value  as  varchar) ,  @id_old  =  @id
        end
      fetch my_cursor  into  @id ,  @value
  END
  insert  @t  values( @id_old ,  stuff( @s, 1, 1, ''))
  close my_cursor
  deallocate my_cursor
 
select  *  from  @t
  drop  table tb

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
SQL 数据库
达梦(DM) SQL数据及字符串操作
继续讲述DM数据库Sql操作
|
2月前
|
SQL Oracle 关系型数据库
SQL语句中的引号使用技巧:正确处理字符串与标识符
在编写SQL语句时,引号的使用是一个基础且重要的环节
|
4月前
|
SQL XML JSON
在 SQL Server 中使用字符串转义
【8月更文挑战第5天】
261 7
在 SQL Server 中使用字符串转义
|
3月前
|
SQL 关系型数据库 MySQL
MySQL根据某个字段包含某个字符串或者字段的长度情况更新另一个字段的值,如何写sql
MySQL根据某个字段包含某个字符串或者字段的长度情况更新另一个字段的值,如何写sql
180 0
|
4月前
|
SQL 存储 关系型数据库
SQL字符串查询有哪些坑?
本文通过创建一个包含不同格式姓名数据的表格,探讨了MySQL中字符排序规则(Collation)的影响。通过使用不区分大小写和空格的查询条件,文章演示了如何获取所有插入的记录,并解释了排序规则中"_ci"、"_cs"及"_bin"的区别。此外,还强调了在数据处理过程中,应考虑大小写敏感性和字符串前后空格的问题,以防导致统计或比较上的错误。最后,提供了Go语言中处理这类问题的方法,如使用`strings.EqualFold()`进行不区分大小写的字符串比较,以及使用`strings.TrimSpace()`去除字符串两端的空白字符。
|
5月前
|
JSON 数据格式 SQL
SQL开发问题之直接使用join方法在处理字符串类型属性时可能会遇到性能问题如何解决
SQL开发问题之直接使用join方法在处理字符串类型属性时可能会遇到性能问题如何解决
|
4月前
|
SQL 数据采集 存储
"揭秘SQL Server中REPLACE函数的神奇力量!一键替换字符串,解锁数据处理的无限可能,你还在等什么?"
【8月更文挑战第20天】SQL Server 的 REPLACE 函数是处理字符串的强大工具,用于在查询中替换字符串的部分内容。基本语法为 `REPLACE(string_expression, string_pattern, string_replacement)`。例如,可将员工邮箱从 `@example.com` 替换为 `@newdomain.com`。支持多级嵌套替换与变量结合使用,适用于动态生成查询。注意大小写敏感性及全局替换特性。掌握 REPLACE 函数能有效提升数据处理能力。
171 0
|
5月前
|
SQL 数据库 Python
【Python】已完美解决:(executemany()方法字符串参数问题)more placeholders in sql than params available
【Python】已完美解决:(executemany()方法字符串参数问题)more placeholders in sql than params available
80 1
|
7月前
|
SQL HIVE
【Hive SQL】字符串操作函数你真的会用吗?
本文介绍了SQL中判断字符串是否包含子串的几种方法。`IN`函数判断元素是否完全等于给定元素组中的某项,而非包含关系。`INSTR`和`LOCATE`函数返回子串在字符串中首次出现的位置,用于检测是否存在子串。`SUBSTR`则用于提取字符串的子串。`LIKE`用于模糊匹配,常与通配符配合使用。注意`IN`并非用于判断子串包含。
459 3
|
7月前
|
SQL 关系型数据库 MySQL
SQL脚本字符串替换
【5月更文挑战第3天】
70 4
下一篇
无影云桌面