循环 sql 中的一个字符
Loop through a character in 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
我想从 @valueList
变量中删除零并将剩余部分存储在另一个变量中。
如何在 sql 中执行此操作?
您可以使用 PATINDEX 函数查找第一个非零数字;
DECLARE @valueList varchar(8000)
SET @valueList = '00000129563698'
SELECT SUBSTRING(@valueList, PATINDEX('%[1-9]%', @valueList), 8000)
您可以转换为数字,然后再转换为字符串。
SET @valueList = convert(varchar,(convert(int,'00000129563698')))
试试这个!
declare @orig varchar(100)
set @orig='00000129563698'
declare @dup varchar(100)
set @dup= REPLACE(@orig,'0','')
select @dup
Demo To replace all zero's
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 中执行此操作?
您可以使用 PATINDEX 函数查找第一个非零数字;
DECLARE @valueList varchar(8000)
SET @valueList = '00000129563698'
SELECT SUBSTRING(@valueList, PATINDEX('%[1-9]%', @valueList), 8000)
您可以转换为数字,然后再转换为字符串。
SET @valueList = convert(varchar,(convert(int,'00000129563698')))
试试这个!
declare @orig varchar(100)
set @orig='00000129563698'
declare @dup varchar(100)
set @dup= REPLACE(@orig,'0','')
select @dup