zoukankan      html  css  js  c++  java
  • SqlServer 多行字段值字符串连接

    例:   
          id                 txt   
            1                   aaa   
            1                   bbb   
            2                   ccc   
            3                   ddd   
            3                   eee   
            3                   fff   
        
        
      select   id,***(txt,';')   from   tb   group   by   id   
      结果:   
            1         aaa;bbb   
            2         ccc   
            3         ddd;eee;fff   

    方法----------------------------------------------------------------
      create   table   tb(id   int,txt   varchar(100))   
      go   
      insert   into   tb   
      select   1,'aaa'   union   all   
      select   1,'bbb'   union   all   
      select   2,'ccc'   union   all   
      select   3,'ddd'   union   all   
      select   3,'eee'   union   all   
      select   3,'fff'   
        
      go   
      --写一个聚合函数:   
      create   function   dbo.fn_Merge(@id   int)   
      returns   varchar(8000)   
      as   
      begin   
            declare   @r   varchar(8000)   
            set   @r=''   
            select   @r=@r+';'+txt   from   tb   where   id=@id   
            return   stuff(@r,1,1,'')   
      end   
      go   
        
      --   调用函数   
      select   id,   dbo.fn_Merge(id)   as   txt   from   tb   group   by   id   
            
      go   
      drop   table   tb   
      drop   function   fn_Merge 

    ------------STUFF函数--------------

    STUFF删除指定长度的字符并在指定的起始点插入另一组字符。

    语法 STUFF ( character_expression , start , length , character_expression ) 参数 character_expression由字符数据组成的表达式。character_expression 可以是常量、变量,也可以是字符或二进制数据的列。

    start 是一个整形值,指定删除和插入的开始位置。如果 start 或 length 是负数,则返回空字符串。如果 start 比第一个 character_expression 长,则返回空字符串。

     length 是一个整数,指定要删除的字符数。如果 length 比第一个 character_expression 长,则最多删除到最后一个 character_expression 中的最后一个字符。返回类型如果 character_expression 是一个支持的字符数据类型,则返回字符数据。如果 character_expression 是一个支持的 binary 数据类型,则返回二进制数据。

    注释可以嵌套字符串函数。

    示例下例

    通过在第一个字符串 (abcdef) 中删除从第二个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,创建并返回一个字符串。

    SELECT STUFF('abcdef', 2, 3, 'ijklmn')

    GO下面是结果集:--------- aijklmnef

  • 相关阅读:
    java中的object类
    java中super的使用
    java中final的使用
    java中的继承初始化顺序
    java中的方法重写
    springMVC的流程
    dubbo与zookeeper
    java的几种常见数据结构
    集合框架之List和Set区别
    集合框架
  • 原文地址:https://www.cnblogs.com/xiaofengfeng/p/2360660.html
Copyright © 2011-2022 走看看