字符串合并与拆分写法小结

字符串合并与拆分写法小结

ID:35301772

大小:25.34 KB

页数:6页

时间:2019-03-23

字符串合并与拆分写法小结_第1页
字符串合并与拆分写法小结_第2页
字符串合并与拆分写法小结_第3页
字符串合并与拆分写法小结_第4页
字符串合并与拆分写法小结_第5页
资源描述:

《字符串合并与拆分写法小结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、字符串合并与拆分写法小结 一.字符合并?1234567891011121314ifOBJECT_ID('ConcatStr')isnotnulldroptableConcatStrGOcreatetableConcatStr(IDint,Codevarchar(10))GOinsertintoConcatStrselect1,'XXX'unionallselect1,'YYY'unionallselect2,'PPP'unionallselect2,'QQQ'   要得到这样的结果: ?123IDCode1XXX,YYY2PPP,QQQ 

2、1.用游标 ?123456789declare@ttable(IDint,Codevarchar(1000))declare@idintdeclareccursorforselectdistinctIDfromConcatStropencfetchnextfromcinto@idwhile@@fetch_status=0begindeclare@strvarchar(max)101112131415161718set@str=''select@str=@str+','+CodefromConcatStrwhereID=@idinserti

3、nto@t(ID,Code)select@id,stuff(@str,1,1,'')fetchnextfromcinto@idendclosecdeallocatecselect*from@t   2.用自定义函数 跟游标的方法类似,只是把逐个取的动作封装到函数里去了。(1)函数方法1 ?12345678910111213ifOBJECT_ID('f_concat_str')isnotnulldropfunctionf_concat_strGOcreatefunctionf_concat_str(@idint)returnsnvarcha

4、r(4000)asbegindeclare@snvarchar(4000)set@s=''select@s=@s+','+CodefromConcatStrwhereID=@idreturn(stuff(@s,1,1,''))--return(right(@s,len(@s)-1))End   (2)函数方法2,就是把函数1再简化 ?1234ifOBJECT_ID('f_concat_str')isnotnulldropfunctionf_concat_strGOcreatefunctionf_concat_str(@idint)5678

5、91011121314returnsnvarchar(4000)asbegindeclare@snvarchar(4000)--set@s=''--select@s=casewhen@s=''thenCodeelse@s+','+Codeend--fromConcatStrwhereID=@idselect@s=isnull(@s+',','')+CodefromConcatStrwhereID=@idreturn@send   调用函数1或者函数2 ?12345--selectID,dbo.f_concat_str(ID)asCode-

6、-fromConcatStr--groupbyIDSelectdistinctID,Code=dbo.f_concat_str(ID)fromConcatStr   3.利用静态的行列转换写法 给分组里的每行构造一个编号,行列转换后把列连接起来,编号多少个,取决于每个分组COUNT(1)的值。 ?12345678910SELECTID,       MAX(CASEWHENnum=1THENCodeELSE''END)     +MAX(CASEWHENnum=2THEN','+CodeELSE''END)ASCodeFROM(SELEC

7、TID,Code,      (SELECTCOUNT(*)         FROMdbo.ConcatStrASt2        WHEREt2.ID=t1.ID          ANDt2.Code<=t1.Code)ASnumFROMdbo.ConcatStrASt1)AStGROUPBYID;   4.用FORXML子句 (1)FORXMLAUTOSQLServer2000就有这个子句,不过OUTERAPPLY是SQLServer2005的语法。通常这种写法效率上不会比用函数快。 ?12SELECT*FROM(SELECTD

8、ISTINCTIDFROMConcatStr)AOUTERAPPLY(SELECTCode=STUFF(REPLACE(REPLACE((SELECTCodeFROMConcatStrNWHE

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。