这里假设有 一串数组变量 "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






 阿云: