sqlserver oracle 字串拼接

來源:互聯網
上載者:User

標籤:

create table tb ([id] int,[name] varchar(2))insert into tbselect 1,‘aa‘ union allselect 2,‘bb‘ union allselect 1,‘cc‘ union allselect 3,‘dd‘ union allselect 2,‘ee‘ select * from tb--查詢select   id,  name=stuff((select ‘,‘+name from tb where id=t.id for xml path(‘‘)),1,1,‘‘)from  tb tgroup by  id   方法二: CREATE FUNCTION GET_STRING(@ID INT)RETURNS VARCHAR(50)AS   BEGIN        DECLARE @NAME VARCHAR(500)       SELECT @NAME=ISNULL(@NAME+‘,‘,‘‘)+NAME FROM TB WHERE ID=@ID       RETURN @NAME  ENDSELECT ID ,DBO.GET_STRING(ID)NAME FROM TB GROUP BY ID-----------------------------------------------------------------------在oracle中,是有相對應的函數,sys_connect_by_path函數。先在這裡把oracle的函數實現也寫下吧select id      ,itrim(max(sys_connect_by_path(name,‘,‘))) as namefrom     (select id    ,name    ,lead(rnFirst) over(partition by no order by rnFirst)rnNext     from   (select a.id  ,a.name  ,row_number() over(order by a.id,a.name desc) rnFirst   from @t a) tmpTable1) tmpTable2start with rnNext is nullconnect by rnNext = PRior rnFirstgroup by id以上是實現oracle中的行轉列方式。********************************************下面我們來看一下sqlserver的,因為sqlserver沒提供類似的函數,不知道sqlserver2012提供沒不過sqlserver支援起來也很簡單,使用cross apply和for xml path組合來用,這兩個單獨都知道是怎麼回事,怎麼使用,但是真不知道還有它倆組合來完成這個功能的,感到很是不可思議,這裡要感謝下網路上的人,原來自己寫東西都是把所學到的知識記錄到本機,從不放到網上,也可能是最近吧,好多工作不會,都是通過網路協助,就把我所知道的東西也都放到網上來,大家一起學習。sqlserver:select id, SUBSTRING(names, 1, len(names)-1) from @t AS A cross APPLY(SELECT NAME + ‘,‘ FROM @t AS B WHERE A.id = B.id FOR XML PATH(‘‘)) D (names)GROUP BY id, names


  1  aa,cc   2  bb,ee  3  dd  

 

sqlserver實測有效

以上內容轉自

http://new-fighter.iteye.com/blog/1537533

sqlserver oracle 字串拼接

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.