1. 程式人生 > >字符串反轉reverse

字符串反轉reverse

auth rip alt bold script while eight mage pre

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

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
Source Code

舉例運行上面的方法:

技術分享圖片

哈哈,一切都是白忙,因為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
Source Code

字符串反轉reverse