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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM