DECLARE @len int
DECLARE @s varchar(8000)
DECLARE @s1 varchar(8000)
set @s=',200501'
set @s1=',200401,200501,200601'
set @len=CHARINDEX(',200601',@s1)-CHARINDEX(@s,@s1)
print CHARINDEX(',200601',@s1)
print '减'
print CHARINDEX(@s,@s1)
print '等于'
print @len
结果:
15
减
8
等于
715-8不等于7那等于什么?
DECLARE @s varchar(8000)
DECLARE @s1 varchar(8000)
set @s=',200501'
set @s1=',200401,200501,200601'
set @len=CHARINDEX(',200601',@s1)-CHARINDEX(@s,@s1)
print CHARINDEX(',200601',@s1)
print '减'
print CHARINDEX(@s,@s1)
print '等于'
print @len
结果:
15
减
8
等于
715-8不等于7那等于什么?
--建表
create table sxl
(
aa varchar(20),
bb varchar(200)
)create table xxy
(
wjh varchar(20),
ny varchar(200)
)
--插入数据
insert into sxl(aa,bb)
select '1111111',',200401,200501,200601' union all
select '2222222',',200401,200505,200601' union all
select '3333333',',200401,200501,200601'insert into xxy(wjh,ny)
select '1111111',',200501' union all
select '2222222',',200505' union all
select '3333333',',200501'--执行语句(从你那里拷贝的)
DECLARE @len int
DECLARE @len3 int
DECLARE @s varchar(8000)
DECLARE @s1 varchar(8000)
DECLARE @s2 varchar(8000)
DECLARE Customer_cursor2 cursor for
select wjh,ny from xxy
open Customer_cursor2
Fetch Next from Customer_cursor2
into @s,@s1
while @@Fetch_status=0Begin
select @s2=bb FROM sxl WHERE aa=@s
set @len=CHARINDEX(',200601',@s2)-CHARINDEX(@s1,@s2)
select @len
Fetch Next From Customer_cursor2
into @s,@s1
end
close Customer_cursor2
Deallocate Customer_cursor2--结果
--------------------------------
7
----
7
----
7
--------------------------------你说的执行结果是15是指的什么啊?
改为
update sxl set bb = stuff(@s2,CHARINDEX(@s1,@s2),@len,'') where aa = @s执行后的结果:
---------------------------
1111111 ,200401,200601
2222222 ,200401,200601
3333333 ,200401,200601
---------------------------不知道还有什么问题?
CHARINDEX(@s1,@s2)为0
得出的值是15;经过测试CHARINDEX(@s1,@s2)为0
为什么???