declare @str varchar(100) declare @s varchar(100) set @str='010001001' set @s='' while charindex('1',@str)>0 begin select @s=@s+' '+cast(charindex('1',@str)as varchar(1)) select @str=stuff(@str,charindex('1',@str),1,'0') print @str end set @s='字符串'+@str+'中1的位子为:'+@s print @s
判断多少个1 declare @t varchar(20) set @t='11100010201' print len(@t)-len(replace(@t,'1',''))
declare @str varchar(100) declare @str1 varchar(100) declare @s varchar(100) set @str='010001001' set @str1='010001001' set @s='' while charindex('1',@str)>0 begin select @s=@s+' '+cast(charindex('1',@str)as varchar(1)) select @str=stuff(@str,charindex('1',@str),1,'0') end set @s='字符串'+@str1+'中1的位子为:'+@s print @s 结果为:字符串010001001中1的位子为: 2 6 9
我是这样写的,但为什么不行呢?用left和stuff这两个函数为什么不行呢?我是用left来取左侧第一个数,然后用stuff来去掉这个刚取过的数,但是实验的时候发现所取的这个字符并没有取到,因为在插入表的时候没有成功.是不是stuff用空格来替换并不是真正去换了一个字符呢?请诸君为我解答.最初前面提的问题已解决.此问题占此文的25分. declare @Count int declare @ResultCopy varchar (16) declare @AnswerFlag char(1) while (@Count > 0) begin /*取最左边的一个字符*/ select @AnswerFlag = left(@ResultCopy,1); insert into T_test2 (dd,gg) values (@AnswerFlag,@AnswerFlag)
set @Count = @Count - 1 /*将最左字符以""代替*/ select stuff(@ResultCopy,1,1,''); end
要是判断有多少个1就要写自定义的函数来处理了。
declare @s varchar(100)
set @str='010001001'
set @s=''
while charindex('1',@str)>0
begin
select @s=@s+' '+cast(charindex('1',@str)as varchar(1))
select @str=stuff(@str,charindex('1',@str),1,'0') print @str
end
set @s='字符串'+@str+'中1的位子为:'+@s
print @s
declare @t varchar(20)
set @t='11100010201'
print len(@t)-len(replace(@t,'1',''))
declare @str1 varchar(100)
declare @s varchar(100)
set @str='010001001'
set @str1='010001001'
set @s=''
while charindex('1',@str)>0
begin
select @s=@s+' '+cast(charindex('1',@str)as varchar(1))
select @str=stuff(@str,charindex('1',@str),1,'0')
end
set @s='字符串'+@str1+'中1的位子为:'+@s
print @s
结果为:字符串010001001中1的位子为: 2 6 9
declare @Count int
declare @ResultCopy varchar (16)
declare @AnswerFlag char(1) while (@Count > 0)
begin
/*取最左边的一个字符*/
select @AnswerFlag = left(@ResultCopy,1);
insert into T_test2 (dd,gg) values (@AnswerFlag,@AnswerFlag)
set @Count = @Count - 1
/*将最左字符以""代替*/
select stuff(@ResultCopy,1,1,'');
end