Sql server 循环sql中的字符 DECLARE@valueList varchar(8000) 声明@pos INT 声明@lenint 声明@value varchar(8000) 设置@valueList='00000129563698' 设置@pos=0 设置为@len=0 而CHARINDEX('0',@valueList,@pos+1)0 开始 设置@len=CHARINDEX('0',@valueList,@pos+1)-@pos 设置@value=SUBSTRING(@valueList、@pos、@len) 打印@value 设置@pos=CHARINDEX('0',@valueList,@pos+@len)+1 结束

Sql server 循环sql中的字符 DECLARE@valueList varchar(8000) 声明@pos INT 声明@lenint 声明@value varchar(8000) 设置@valueList='00000129563698' 设置@pos=0 设置为@len=0 而CHARINDEX('0',@valueList,@pos+1)0 开始 设置@len=CHARINDEX('0',@valueList,@pos+1)-@pos 设置@value=SUBSTRING(@valueList、@pos、@len) 打印@value 设置@pos=CHARINDEX('0',@valueList,@pos+@len)+1 结束,sql-server,while-loop,charindex,Sql Server,While Loop,Charindex,我想从@valueList变量中删除零,并将剩余部分存储在另一个变量中 如何在sql中执行此操作?您可以使用函数查找第一个非零数字 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', @val

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

如何在sql中执行此操作?

您可以使用函数查找第一个非零数字

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

您可以将其转换为数字,然后再次转换为字符串

DECLARE @valueList varchar(8000)

SET @valueList = '00000129563698'

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

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

您是在问如何在单个语句中执行此操作,即不使用WHILE循环吗?是的,任何可能性都可以。但是@valueList='0000022956497698'这将change@VijayPV那里面的零呢?就像
'000000120244562007'
零内不应替换。不管怎样,我得到了答案,谢谢你花宝贵的时间
declare @orig varchar(100)
set @orig='00000129563698'

declare @dup varchar(100)


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

select @dup