循环遍历sql中的一个字符

时间:2015-03-19 09:14:45

标签: sql-server while-loop charindex

DECLARE @valueList varchar(8000)
DECLARE @pos INT
DECLARE @len INT
DECLARE @value varchar(8000)

SET @valueList = '00000129563698'

set @pos = 0
set @len = 0

WHILE CHARINDEX('0', @valueList, @pos+1)<>0
BEGIN
    set @len = CHARINDEX('0', @valueList, @pos+1) - @pos
    set @value = SUBSTRING(@valueList, @pos, @len)

    PRINT @value

    set @pos = CHARINDEX('0', @valueList, @pos+@len) +1
END

我想从@valueList变量中删除零,并将剩余部分存储在另一个变量中。

我怎样才能在sql中执行此操作?

3 个答案:

答案 0 :(得分:2)

您可以使用PATINDEX功能查找第一个非零数字;

DECLARE @valueList varchar(8000)

SET @valueList = '00000129563698'

SELECT SUBSTRING(@valueList, PATINDEX('%[1-9]%', @valueList), 8000)

答案 1 :(得分:1)

试试这个!

declare @orig varchar(100)
set @orig='00000129563698'

declare @dup varchar(100)


set @dup= REPLACE(@orig,'0','')

select @dup

Demo To replace all zero's

答案 2 :(得分:0)

您可以转换为数字并再次转换为字符串。

SET @valueList = convert(varchar,(convert(int,'00000129563698')))