使用 T-SQL,我试图找到反转字符串中数字的最简单方法。所以对于像这样的字符串Test123Hello
have Test321Hello
.
[Before] [After]
Test123Hello Test321Hello
Tt143 Hello Tt341 Hello
12Hll 21Hll
Tt123H3451end Tt321H1543end
你可以使用这个功能
CREATE FUNCTION [dbo].[fn_ReverseDigit_MA]
(
@Str_IN nVARCHAR(max)
)
RETURNS NVARCHAR(max)
AS
BEGIN
DECLARE @lenstr AS INT =LEN(@Str_IN)
DECLARE @lastdigend AS INT=0
while (@lastdigend<@lenstr)
BEGIN
DECLARE @strPart1 AS NVARCHAR(MAX)=LEFT(@Str_IN,@lastdigend)
declare @lenstrPart1 AS INT=LEN(@strPart1)
DECLARE @strPart2 AS NVARCHAR(MAX)=RIGHT(@Str_IN,@lenstr-@lastdigend)
declare @digidx as int=patindex(N'%[0-9]%' ,@strPart2)+@lenstrPart1
IF(@digidx=@lenstrPart1)
BEGIN
BREAK;
END
DECLARE @strStartdig AS NVARCHAR(MAX) = RIGHT(@Str_IN,@lenstr-@digidx+1)
declare @NDidx as int=patindex(N'%[^0-9]%' ,@strStartdig)+@digidx-1
IF(@NDidx<=@digidx)
BEGIN
SET @NDidx=@lenstr+1
END
DECLARE @strRet AS NVARCHAR(MAX)=LEFT(@Str_IN,@digidx-1) +REVERSE(SUBSTRING(@Str_IN,@digidx,@NDidx-@digidx)) +RIGHT(@Str_IN,@lenstr-@NDidx+1)
SET @Str_IN=@strRet
SET @lastdigend=@NDidx-1
END
return @Str_IN
END
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)