大約2年前,寫過一篇《字元串中去除多餘的空格保留一個(C#)》https://www.cnblogs.com/insus/p/7954151.html 今天,Insus.NET使用MS SQL Server來實現相同的功能。現Insus.NET已經把它寫成一個自定義函數。 SET ANSI_NULL ...
大約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 GOSource Code
使用一個例子來說明: