Sql 字符串拆分

shenhui_163 2010-06-08 09:13:28
ALTER PROCEDURE fdrp_SearchUnNormalOrders
AS

DECLARE @SpecTemp VARCHAR(500)
DECLARE mycursor CURSOR FOR
SELECT Spec,OrderdetailID FROM dbo.OrderDetail
OPEN mycursor
DECLARE @Spec VARCHAR(8000)
SET @Spec = ''
DECLARE @OrderDetailID VARCHAR(100)
SET @OrderDetailID = ''

DECLARE @Num INT --统计规格备注中加号出现的次数
SET @Num = 0
DECLARE @i INT
SET @i = 0
FETCH next FROM mycursor INTO
@Spec
,@OrderDetailID
WHILE(@@fetch_status = 0)
BEGIN
PRINT @OrderDetailID
PRINT @Spec

IF(LEN(@Spec) > 0)
BEGIN
SET @Num = LEN(@Spec)-LEN(REPLACE(@Spec,'+',''))
WHILE @i <= @Num
BEGIN
IF(CHARINDEX('+', @Spec, 0) > 0)
BEGIN
SET @SpecTemp = SUBSTRING(@Spec, 1, (CHARINDEX('+', @Spec, 0) -1 ))
PRINT @SpecTemp
END
ELSE
BEGIN
SET @SpecTemp = @Spec
PRINT @SpecTemp
END
SET @Spec = SUBSTRING(@Spec, CHARINDEX('+', @Spec, 0) + 1 ,LEN(@Spec))
SET @i = @i + 1
END
END

FETCH next FROM mycursor INTO
@Spec
,@OrderDetailID
END
CLOSE mycursor
DEALLOCATE mycursor

我想问一下,为什么我游标里的 @SpecTemp 只循环一次,而不是随着游标反复执行
...全文
77 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
昵称被占用了 2010-06-08
  • 打赏
  • 举报
回复
建议看看stuff函数用法,写起来简单得多
昵称被占用了 2010-06-08
  • 打赏
  • 举报
回复
@i初始化放错地方了
hdh9988 2010-06-08
  • 打赏
  • 举报
回复
你print变量@SpecTemp的结果是什么?应该是条件不符合吧

34,587

社区成员

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

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