27,579
社区成员
发帖
与我相关
我的任务
分享
--循环判断最后一位是否为 0,是则删除掉,直到不为 0 。
DECLARE @BB NVARCHAR(20)
SET @BB = '4501000'
DECLARE @i INT,@CC NVARCHAR(20)
SET @i = LEN(@BB)
SET @CC = @BB
WHILE SUBSTRING(@CC,@i,1) = '0'
BEGIN
SET @CC = SUBSTRING(@CC,1,@i-1)
SET @i = @i-1
CONTINUE
END
SELECT @CC
/*
--------------------
4501
(1 個資料列受到影響)*/
--循环判断最后一位是否为 0,是则删除掉,直到不为 0 。
DECLARE @AA NVARCHAR(20)
SET @AA = '45002500'
DECLARE @i INT,@CC NVARCHAR(20)
SET @i = LEN(@AA)
SET @CC = @AA
WHILE SUBSTRING(@CC,@i,1) = '0'
BEGIN
SET @CC = SUBSTRING(@CC,1,@i-1)
SET @i = @i-1
CONTINUE
END
SELECT @CC
/*
--------------------
450025
(1 個資料列受到影響)*/
--循环判断最后一位是否为 0,是则删除掉,直到不为 0 。
DECLARE @AA NVARCHAR(20),@BB NVARCHAR(20)
SET @AA = '45002500'
SET @BB = '4501000'
DECLARE @i INT,@CC NVARCHAR(20)
SET @i = LEN(@AA)
SET @CC = @AA
--SET @i = LEN(@BB)
--SET @CC = @BB
WHILE SUBSTRING(@CC,@i,1) = '0'
BEGIN
SET @CC = SUBSTRING(@CC,1,@i-1)
SET @i = @i-1
CONTINUE
END
PRINT @CC
CREATE FUNCTION dbo.trimChar(@char VARCHAR(5),@str VARCHAR(50))
RETURNS VARCHAR(50)
AS
BEGIN
RETURN(SELECT STUFF
(REVERSE(
STUFF(REVERSE(@str),1,
PATINDEX('%[^'+@char+']%',REVERSE(@str))-1,'')
)
,1,PATINDEX('%[^'+@char+']%',@str)-1,'')
);
END
GO
DECLARE
@str VARCHAR(20);
SET @str='0012agd02002d400';
SELECT dbo.trimChar('0',@str);
DROP FUNCTION dbo.trimChar
/*
--------------------------------------------------
12agd02002d4
(1 行受影响)
*/