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中执行此操作?
答案 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
答案 2 :(得分:0)
您可以转换为数字并再次转换为字符串。
SET @valueList = convert(varchar,(convert(int,'00000129563698')))