去除字符串中的所有控制字符

IF OBJECT_ID('dbo.Fun_CutControlChars') IS NOT NULL
	DROP FUNCTION dbo.Fun_CutControlChars
GO
-- =============================================
-- Author:		yenange
-- Create date: 2018-06-07
-- Description:	去除字符串中的所有控制字符
-- =============================================
CREATE FUNCTION dbo.Fun_CutControlChars
(
	@str NVARCHAR(MAX)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
	DECLARE @r NVARCHAR(MAX),@s NCHAR(1)
	IF @str IS NULL
		RETURN NULL;
	IF @str=''
		RETURN ''; 
	
	SET @r=''
	WHILE LEN(@str)>0
	BEGIN
		SET @s=LEFT(@str,1);
		SET @str=SUBSTRING(@str,2,LEN(@str)-1);
		
		SET @r= @r + (CASE WHEN ASCII(@s)<=31 THEN '' ELSE @s END); 
	END

	RETURN @r
END
GO

DECLARE @s NVARCHAR(100),@s2 NVARCHAR(100);
SET @s='	12345abc
';
SET @s2=dbo.Fun_CutControlChars(@s);

SELECT @s,LEN(@s),@s2,LEN(@s2);
/*
 12345abc  	11	12345abc	8
*/

猜你喜欢

转载自blog.csdn.net/yenange/article/details/80611067