问题标题:
ms_sql数据库按符号拆分成多列和多行例:列1,列2122,33244,55,66拆分为122133244255例:列1,列2122,33244,55,66拆分为122133244255266
问题描述:
ms_sql数据库按符号拆分成多列和多行例:列1,列2122,33244,55,66拆分为122133244255
例:列1,列2
122,33
244,55,66
拆分为
122
133
244
255
266
霍凯回答:
试一下列转行或者用存储过程采用临时表方式
费早成回答:
我sql基础不行,能不能给我写个存储过程,详细点
霍凯回答:
你这个存储过程有点多我要写一会儿等哈发上来
费早成回答:
好的,谢谢!
霍凯回答:
你直接在查询分析器里面运行下面代码就是那如果ok记得采纳哦!!!IFEXISTS(SELECT*FROMsys.objectsWHEREobject_ id=OBJECT_ID(N'[dbo].[fn_SplitStr2]')ANDtypein(N'FN',N'IF',N'TF',N'FS',N'FT'))DROPFUNCTION[dbo].[fn_SplitStr2]GOCREATEFunction[dbo].[fn_SplitStr2](@SourceSqlvarchar(8000),@StrSepratevarchar(20))RETURNS@temptable(F1varchar(100))ASBEGINDECLARE@chvarchar(100)SET@SourceSql=@SourceSql+@StrSeprateWHILE(@SourceSql'')BEGINSET@ch=left(@SourceSql,charindex(@StrSeprate,@SourceSql,1)-1)INSERT@tempVALUES(@ch)SET@SourceSql=stuff(@SourceSql,1,charindex(@StrSeprate,@SourceSql,1),'')ENDRETURNENDdeclare@ttable(IDint,Contetntvarchar(500))declare@t1table(IDint,Contetntvarchar(100))insert@tselect1,'22,33'unionselect2,'44,55,66'whileexists(selecttop1IDfrom@t)begininsert@t1(ID,Contetnt)select(selecttop1IDfrom@t)asID,F1from[dbo].[fn_SplitStr2]((selecttop1[Contetnt]from@t),',')delete@twhereID=(selecttop1IDfrom@t)endselect*from@t1
点击显示
其它推荐