字符串中去除多余的空格保留一个(MS SQL Server)

大约2年前,写过一篇《字符串中去除多余的空格保留一个(C#)https://www.cnblogs.com/insus/p/7954151.html

今天,Insus.NET使用MS SQL Server来实现相同的功能。现Insus.NET已经把它写成一个自定义函数。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      Insus.NET
-- Create date: 2019-05-13
-- Update date: 2019-05-13
-- Description: 保留一个空格
-- =============================================
CREATE FUNCTION [dbo].[svf_Leave_A_Space] 
( 
    @InputString NVARCHAR(MAX)
) 
RETURNS NVARCHAR(MAX)
AS
BEGIN
    DECLARE @Index INT = 1
    DECLARE @CurrentChar CHAR(1)
    DECLARE @PreviousChar CHAR(1)
    DECLARE @Str NVARCHAR(MAX) = N''

    WHILE @Index <= LEN(@InputString)
    BEGIN
        SET @CurrentChar = SUBSTRING(@InputString, @Index, 1)
        SET @PreviousChar = SUBSTRING(@InputString, @Index - 1, 1)

        IF @CurrentChar != ' ' OR @CurrentChar != @PreviousChar                
            SET @Str = @Str + CAST(@CurrentChar AS NVARCHAR(MAX))

        SET @Index = @Index + 1
    END
    RETURN @Str
END
GO
Source Code

 

使用一个例子来说明:

 

转载于:https://www.cnblogs.com/insus/p/10859133.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值