欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

字符串反转reverse

程序员文章站 2023-04-07 13:41:43
我们有一串字符串,比如: 现想把它反转显示: 此时,你可以写一个方法来处理: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- -- Author: Insus.NET -- Create date: 2019-05-16 -- Update d ......

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

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