[sql server] 合并字符串

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 本文转载: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 数据库
达梦(DM) SQL数据及字符串操作
继续讲述DM数据库Sql操作
|
7月前
|
SQL Java 数据库连接
MyBatis动态SQL字符串空值判断,这个细节99%的程序员都踩过坑!
本文深入探讨了MyBatis动态SQL中字符串参数判空的常见问题。通过具体案例分析,对比了`name != null and name != ''`与`name != null and name != ' '`两种写法的差异,指出后者可能引发逻辑混乱。为避免此类问题,建议在后端对参数进行预处理(如trim去空格),简化MyBatis判断逻辑,提升代码健壮性与可维护性。细节决定成败,严谨处理参数判空是写出高质量代码的关键。
942 0
|
SQL XML JSON
在 SQL Server 中使用字符串转义
【8月更文挑战第5天】
1392 7
在 SQL Server 中使用字符串转义
|
SQL Oracle 关系型数据库
SQL语句中的引号使用技巧:正确处理字符串与标识符
在编写SQL语句时,引号的使用是一个基础且重要的环节
1741 0
|
JSON 数据格式 SQL
SQL开发问题之直接使用join方法在处理字符串类型属性时可能会遇到性能问题如何解决
SQL开发问题之直接使用join方法在处理字符串类型属性时可能会遇到性能问题如何解决
131 8
|
SQL 存储 关系型数据库
SQL字符串查询有哪些坑?
本文通过创建一个包含不同格式姓名数据的表格,探讨了MySQL中字符排序规则(Collation)的影响。通过使用不区分大小写和空格的查询条件,文章演示了如何获取所有插入的记录,并解释了排序规则中"_ci"、"_cs"及"_bin"的区别。此外,还强调了在数据处理过程中,应考虑大小写敏感性和字符串前后空格的问题,以防导致统计或比较上的错误。最后,提供了Go语言中处理这类问题的方法,如使用`strings.EqualFold()`进行不区分大小写的字符串比较,以及使用`strings.TrimSpace()`去除字符串两端的空白字符。
177 1
|
SQL 关系型数据库 MySQL
MySQL根据某个字段包含某个字符串或者字段的长度情况更新另一个字段的值,如何写sql
MySQL根据某个字段包含某个字符串或者字段的长度情况更新另一个字段的值,如何写sql
643 0
|
SQL 数据库 Python
【Python】已完美解决:(executemany()方法字符串参数问题)more placeholders in sql than params available
【Python】已完美解决:(executemany()方法字符串参数问题)more placeholders in sql than params available
269 1
|
SQL 数据采集 存储
"揭秘SQL Server中REPLACE函数的神奇力量!一键替换字符串,解锁数据处理的无限可能,你还在等什么?"
【8月更文挑战第20天】SQL Server 的 REPLACE 函数是处理字符串的强大工具,用于在查询中替换字符串的部分内容。基本语法为 `REPLACE(string_expression, string_pattern, string_replacement)`。例如,可将员工邮箱从 `@example.com` 替换为 `@newdomain.com`。支持多级嵌套替换与变量结合使用,适用于动态生成查询。注意大小写敏感性及全局替换特性。掌握 REPLACE 函数能有效提升数据处理能力。
728 0
|
SQL HIVE
【Hive SQL】字符串操作函数你真的会用吗?
本文介绍了SQL中判断字符串是否包含子串的几种方法。`IN`函数判断元素是否完全等于给定元素组中的某项,而非包含关系。`INSTR`和`LOCATE`函数返回子串在字符串中首次出现的位置,用于检测是否存在子串。`SUBSTR`则用于提取字符串的子串。`LIKE`用于模糊匹配,常与通配符配合使用。注意`IN`并非用于判断子串包含。
1244 3