字符串反转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
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
复制代码

 

posted @   Insus.NET  阅读(1034)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
历史上的今天:
2017-05-16 学习Angularjs向数据库添加数据
2016-05-16 ASP.NET的视图(Razor)循环产生html代码
2014-05-16 用一个简单的例子来演绎事件委托
2013-05-16 获取控件在运行时于屏幕中的位置
2013-05-16 演练GridView控件显示目录图片
2011-05-16 The value '5/15/2012' of the MaximumValue property of 'RangeValidator1' cannot be converted to type 'Date'.
2011-05-16 Asp.net网站如何播放Flv视频
点击右上角即可分享
微信分享提示