如果把一個字段撤成幾個字段

cainiaobus 2002-06-14 03:00:04
我要把數據表
aa c1 c2 c3 c4
1
1,2
1,2
1,2,3
1,2,3,4

變成如下形式,
aa c1 c2 c3 c4
1
1 2
1 2
1 2 3
1 2 3 4
請問怎麼做
...全文
38 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ok1234567 2002-06-16
  • 打赏
  • 举报
回复
我喜欢用存储过程
因为可以把复杂的问题简单化

解决你的问题的存储过程大概如下:
---------------------------------
CREATE PROCEDURE [cp_split_column]
AS

DECLARE @ipos int,
@aa varchar(250),
@c1 varchar(10),
@c2 varchar(10),
@c3 varchar(10),
@c4 varchar(10),
@i int,
@id int ----!!!

DECLARE abc CURSOR FOR SELECT id,aa FROM myTable
OPEN abc
FETCH NEXT FROM abc INTO @id,@aa

WHILE (@@FETCH_STATUS = 0)
BEGIN
SET @c1=''
SET @C2=''
SET @c3=''
SET @C4=''
SET @i=1
IF LEN(LTRIM(@aa))>0
BEGIN
SET @ipos=CHARINDEX(',',@aa,1)
WHILE @ipos>0
BEGIN
IF @i=1 SET @c1=LEFT(@aa,@ipos-1)
ELSE IF @i=2 SET @c2=LEFT(@aa,@ipos-1)
ELSE IF @i=3 SET @c3=LEFT(@aa,@ipos-1)
ELSE SET @c4=LEFT(@aa,@ipos-1)

SET @i=@i+1
IF @i>4 BREAK
SET @aa=SUBSTRING(@aa,@ipos+1,250)
SET @ipos=CHARINDEX(',',@aa,1)
END
IF @i<5
BEGIN
IF @i=1 SET @c1=@aa
ELSE IF @i=2 SET @c2=@aa
ELSE IF @i=3 SET @c3=@aa
ELSE SET @c4=@aa
END
END
UPDATE myTable
SET c1=@c1,
c2=@c2,
c3=@c3,
c4=@c4
WHERE id=@id

FETCH NEXT FROM abc INTO @id,@aa
END
CLOSE abc
DEALLOCATE abc
一点点凋落 2002-06-16
  • 打赏
  • 举报
回复
用charindex取,的位置就可以了。
wylyf 2002-06-16
  • 打赏
  • 举报
回复
参见:
http://www.csdn.net/expert/topic/807/807556.xml?temp=.9903833
cainiaobus 2002-06-14
  • 打赏
  • 举报
回复
沒關係,謝謝你的參與
我怎麼知道第二個","的位置
duckcn 2002-06-14
  • 打赏
  • 举报
回复
原来我看错题目了!惭愧。。。。
cainiaobus 2002-06-14
  • 打赏
  • 举报
回复
如果我的aa是這樣的
aa
9,10,11,12
也就是說,不僅僅是一位
duckcn 2002-06-14
  • 打赏
  • 举报
回复
update table set c4=c3,c3=c2,c2=c1,c1=aa,aa=null
这样行吗?
zqllyh 2002-06-14
  • 打赏
  • 举报
回复
update table set c1=substring(aa,1,1),......,,aa =''

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧