字符串反转reverse

我们有一串字符串,比如:

declare @source varchar(max)= 'abcdefghijklmnopqrstuvwxyz'

现想把它反转显示:

zyxwvutsrqponmlkjihgfedcba

此时,你可以写一个方法来处理:

 

set ansi_nulls on
go
set quoted_identifier on
go

-- =============================================
-- author:      insus.net
-- create date: 2019-05-16
-- update date: 2019-05-16
-- description: 反转字符
create function [dbo].[svf_reversestring] ( 
     @source varchar(max)
)
returns nvarchar(max)
as
begin
   declare @destination varchar(max) = ''
    while len(@source) > 0
        begin
        if len(@source) = 0
        begin
            set @destination = @source + @destination
            set @source = ''
        end
        else
        begin
            set @destination = substring(@source, 1, 1) + @destination
            set @source = substring(@source, 2, len(@source))
        end
    end

return @destination
end
go

 

举例运行上面的方法:

 

 

哈哈,一切都是白忙,因为microsoft 已经提供有一个现型的方法reverse:

 

以上不管是哪一个方法,对下面这种情况进行反转,不知是否ok? 字符串以空格为单词进行反转。

 

 

因此,得写另外一个方法来处理:

 

set ansi_nulls on
go
set quoted_identifier on
go

-- =============================================
-- author:      insus.net
-- create date: 2019-05-16
-- update date: 2019-05-16
-- description: 反转函数
create function [dbo].[svf_reverse] ( 
     @source varchar(max)
)
returns nvarchar(max)
as
begin 
    declare @destination varchar(max) = ''
        
    while len(@source) > 0
      begin
        if charindex(' ', @source) > 0
        begin
            set @destination = substring(@source, 0, charindex(' ', @source)) + ' ' + @destination
            set @source = ltrim(rtrim(substring(@source, charindex(' ', @source) + 1, len(@source))))
        end
        else
        begin
            set @destination = @source + ' ' + @destination
            set @source = ''
        end
      end
return @destination
end
go

 

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐