加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

在SQL Server中,如何在select中创建while循环

发布时间:2020-12-12 08:55:46 所属栏目:MsSql教程 来源:网络整理
导读:数据将如下所示: id | data ----|--------- 1 | AABBCC 2 | FFDD 3 | TTHHJJKKLL 我想要的结果是什么 id | data ----|--------- 1 | AA 1 | BB 1 | CC 2 | FF 2 | DD 3 | TT 3 | HH 3 | JJ 3 | KK 3 | LL 我有一个使用游标的sql代码 DECLARE @table2 table (
数据将如下所示:
id  |  data
    ----|---------
    1   |  AABBCC
    2   |  FFDD
    3   |  TTHHJJKKLL

我想要的结果是什么

id  |  data
    ----|---------
    1   |  AA
    1   |  BB
    1   |  CC
    2   |  FF
    2   |  DD
    3   |  TT
    3   |  HH
    3   |  JJ
    3   |  KK
    3   |  LL

我有一个使用游标的sql代码

DECLARE @table2 table ( id INTEGER,data VARCHAR(500))

DECLARE Cur CURSOR FOR
SELECT id FROM table1

OPEN Cur 

WHILE ( @@FETCH_STATUS = 0 )
    BEGIN
        DECLARE @LoopNum INTEGER
        DECLARE @tempID INTEGER
        DECLARE @tempDATA VARCHAR(255)
        FETCH NEXT FROM Cur INTO @tempID
        SET @tempDATA = SELECT data from table1 where id = @teampID
        SET @LoopNUM = 0
        WHILE @LoopNum< len(@tempDATA) / 2
            BEGIN
            INSERT INTO table2 (id,data)
            VALUES( @tempID,SUBSTRING(@tempDATA,@LoopNum * 2 +1,2))
            SET @LoopNum = @LoopNum + 1
        END
    END

CLOSE Cur 
DEALLOCATE Cur 

SELECT * FROM table2

我不想使用CURSOR,因为它太慢了,我有很多数据.
有人有个好主意吗?可能吗?

解决方法

>创建将字符串(特别是“AA”,“BB”,“CC”)分析到传入字符串(例如“AABBCC”)的函数.
>从表中选择ID,并使用 CROSS APPLY该数据作为参数的函数,这样您就可以拥有当前行数据中包含的行数.不需要游标或存储过程.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读