这里假设有 一串数组变量 "appNum1,appNum2,appNum3,appNum4,appNum5,appNum6,appNum7,appNum8"
当我们需要在存储过程中遍历这个数组的子项时,我们可以通过 CHARINDEX 或者结合Left,Right来分隔和遍历它
注意:由于字符串index的计算问题,下面定义变量的时候,需要在最后面增加一个逗号",",否则遍历的时候将缺少最后一个子项
方法一:
代码
- declare @item varchar(50),@rowName varchar(200)
- declare @m int,@n int,@i int
- Set @rowName='appNum1,appNum2,appNum3,appNum4,appNum5,appNum6,appNum7,appNum8,'
- Set @m=CHARINDEX(',',@rowName)
- Set @n=1
- Set @i=0
- WHILE @m>0
- BEGIN
- Set @item=SubString(@rowName,@n,@m-@n)
- Print Cast(@i as varchar)+'-'+@item
- Set @i=@i+1
- Set @n=@m+1
- Set @m=CHARINDEX(',',@rowName,@n)
- END
方法二:
代码
- DECLARE @s varchar(4000)
- DECLARE @i int
- Set @i=0
- SET @s='appNum1,appNum2,appNum3,appNum4,appNum5,appNum6,appNum7,appNum8,'
- WHILE CHARINDEX(',',@s)>0
- BEGIN
- Print Cast(@i as varchar)+'-'+LEFT(@s,CHARINDEX(',',@s)-1)
- Set @i=@i+1
- SET @s=RIGHT(@s,LEN(@s)-CHARINDEX(',',@s))
- END
两个方法的运行结果都是:
0-appNum1
1-appNum2
2-appNum3
3-appNum4
4-appNum5
5-appNum6
6-appNum7
7-appNum8