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

  • 相关阅读:
    linux 安装node.js 和npm
    laravel 记录
    apache-jmeter 使用记录
    将MD5值压缩成8位32进制生成8位长度的唯一英文数字组合字符串
    api接口开发跨域注意事项和设置
    阿里云服务器报 Liunx异常文件下载处理办法
    OpenGL ES 入门
    Spring AOP——Spring 中面向切面编程
    SpringIOC 二—— 容器 和 Bean的深入理解
    静态代理和动态代理
  • 原文地址:https://www.cnblogs.com/xiaofengfeng/p/2360660.html
Copyright © 2011-2022 走看看