使用sql server循环逗号分隔字符串获取问题 [英] loop comma separated string using sql server Getting problem

查看:145
本文介绍了使用sql server循环逗号分隔字符串获取问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的,

我写了如下查询。我想要4个模板值记录,但我没有得到最后一个记录。如果我单独运行它运行良好。



 声明  @ Userid   varchar  20 
声明 @ TempValues varchar (max)
DECLARE @ pos INT
DECLARE @ len INT
DECLARE @ temppos INT
DECLARE @ templen INT
DECLARE @ SelectedUsers varchar (max)
DECLARE @ TemplateValues varchar (max)
设置 @ SelectedUsers = ' ramaFIFTH2,rama2,rama3,rama4';
设置 @ TemplateValues = ' & FA1 ,2015年1月5日,2015年1月1日,http:// localhost:62051 / CloudCampus / ERPLogin.aspx?type = std,Swapna K,Fifth Class,A,141,175,her,B +,9,ramaFIFTH2,N / A,N / A,电话-19/25 |轩-20/25 |英-21/25 |垫-22/25 | SCI-23/25 | SOC-24/25 | Spe-12/25 |& FA1,05 Jan 2015,11 Jan 2015,http:// localhost:62051 / CloudCampus / ERPLogin.aspx?type = std,Ch Pruthiya,Fifth Class,A,141,175,her,B +, 9,rama2,N / A,N / A,电话-22/25 |轩-23/25 | CHI-24/25 |垫-21/25 | SCI-20/25 | SOC-18/25 | Spe-13/25 |& FA1,05 Jan 2015,11 Jan 2015,http:// localhost:62051 / CloudCampus / ERPLogin.aspx?type = std,Maleha Kwsum,Fifth Class,A,139,175,her,C +, 8,rama3,N / A,N / A,电话-19/25 |轩-20/25 | CHI-24/25 |垫-25/25 | SCI-18/25 | SOC-19/25 | Spe-14/25 |& FA1,05 Jan 2015,11 Jan 2015,http:// localhost:62051 / CloudCampus / ERPLogin.aspx?type = std,Kousalya,Fifth Class,A,116,175,her,C +,8 ,rama4,N / A,N / A,电话-15/25 |轩二十五分之一十六|英-17/25 |垫-15/25 | SCI-18/25 | SOC-19/25 | SPE-16/25 |&安培;';
set @ pos = 0; set @ temppos = 0;
set @ len = 0; set @ templen = 0;
set @ SelectedUsers = @ SelectedUsers + ' ;
set @ TemplateValues = @ TemplateValues + ' & ;';
WHILE CHARINDEX(' ,' @ SelectedUsers ,@ pos + 1)> 0
BEGIN
set @ len = CHARINDEX(' ,' @ SelectedUsers ,@ pos + 1) - @pos
- print @len
set @ Userid = SUBSTRING( @ SelectedUsers @ pos @ len

set @ pos = CHARINDEX(' ,' @ SelectedUsers ,@ pos + @ len)+1
set @ templen = CHARINDEX(' &' @ TemplateValues ,@ temppos + 1) - @ temppos
set @ TempValues = SUBSTRING( @ TemplateValues @ temppos @ templen
set @ temppos = CHARINDEX(' &' @ TemplateValues ,@ temppos + @ templen)+1
打印 @ TempValues
打印 @ Userid
结束
- 打印@Userid





谢谢



Hari

解决方案

你错了'最后'的事情......

切换两个'的顺序'打印'声明,看看你得到了什么......

第一个用户标识在模板中没有对...

原因是什么?你设置&作为模板的分隔符和字符串@TemplateValues STARTS用&,所以第一部分将是空的...

检查你的逻辑和你的输入值...

Dear All,
I wrote query like below. I want 4 records of template values but am not getting of last record. If i run individually it is working good.

Declare @Userid varchar(20) 
Declare @TempValues varchar(max)
DECLARE @pos INT
DECLARE @len INT
DECLARE @temppos INT
DECLARE @templen INT
DECLARE @SelectedUsers varchar(max)
DECLARE @TemplateValues varchar(max)
Set @SelectedUsers='ramaFIFTH2,rama2,rama3,rama4';
Set @TemplateValues='&FA1,05 Jan 2015,11 Jan 2015,http://localhost:62051/CloudCampus/ERPLogin.aspx?type=std,Swapna K,Fifth Class,A,141,175,her,B+,9,ramaFIFTH2,N/A,N/A,Tel-19/25| Hin-20/25| Eng-21/25| Mat-22/25| Sci-23/25| Soc-24/25| Spe-12/25|&FA1,05 Jan 2015,11 Jan 2015,http://localhost:62051/CloudCampus/ERPLogin.aspx?type=std,Ch Pruthiya ,Fifth Class,A,141,175,her,B+,9,rama2,N/A,N/A,Tel-22/25| Hin-23/25| Eng-24/25| Mat-21/25| Sci-20/25| Soc-18/25| Spe-13/25|&FA1,05 Jan 2015,11 Jan 2015,http://localhost:62051/CloudCampus/ERPLogin.aspx?type=std,Maleha Kwsum ,Fifth Class,A,139,175,her,C+,8,rama3,N/A,N/A,Tel-19/25| Hin-20/25| Eng-24/25| Mat-25/25| Sci-18/25| Soc-19/25| Spe-14/25|&FA1,05 Jan 2015,11 Jan 2015,http://localhost:62051/CloudCampus/ERPLogin.aspx?type=std,Kousalya ,Fifth Class,A,116,175,her,C+,8,rama4,N/A,N/A,Tel-15/25| Hin-16/25| Eng-17/25| Mat-15/25| Sci-18/25| Soc-19/25| Spe-16/25|&';
set @pos=0;set @temppos=0;
set @len=0;set @templen=0;
set @SelectedUsers=@SelectedUsers+',';	
set @TemplateValues=@TemplateValues+'&';					
		WHILE CHARINDEX(',', @SelectedUsers, @pos+1)>0
			BEGIN
				set @len = CHARINDEX(',', @SelectedUsers, @pos+1) - @pos
				--print @len
				set @Userid = SUBSTRING(@SelectedUsers, @pos, @len)		
							
				set @pos=CHARINDEX(',', @SelectedUsers, @pos+@len) +1
				set @templen = CHARINDEX('&', @TemplateValues, @temppos+1) - @temppos
				set @TempValues = SUBSTRING(@TemplateValues, @temppos, @templen)	
				set @temppos=CHARINDEX('&', @TemplateValues, @temppos+@templen) +1
				Print @TempValues
				print @Userid	
          End
--Print @Userid



Thanks

Hari

解决方案

You are wrong about the 'last' thing...
Switch the order of the two 'print' statements to see what you are getting...
The first userid has no pair in templates...
The reason? You set & as the separator for the templates and the string @TemplateValues STARTS with an &, so the first part will be empty...
Check you logic and your input values...


这篇关于使用sql server循环逗号分隔字符串获取问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆