我們有一串字元串,比如: 現想把它反轉顯示: 此時,你可以寫一個方法來處理: 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 GOSource 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 GOSource Code