CREATE FUNCTION [dbo].[remove_special_char]
(
@str NVARCHAR(1000)
)
RETURNS NVARCHAR(1000)
AS
BEGIN
DECLARE @Result NVARCHAR(1000) = @str;
-- NULL 或空串直接返回
IF @Result IS NULL OR @Result = N''
RETURN @Result;
-- =====================================================
-- 1. 不可见空白字符(全部位置删除)
-- =====================================================
SET @Result = REPLACE(@Result, NCHAR(9), N''); -- Tab 制表符
SET @Result = REPLACE(@Result, NCHAR(10), N''); -- 换行 LF
SET @Result = REPLACE(@Result, NCHAR(13), N''); -- 回车 CR
SET @Result = REPLACE(@Result, NCHAR(160), N''); -- NBSP 不换行空格
SET @Result = REPLACE(@Result, NCHAR(12288), N''); -- 全角空格
SET @Result = REPLACE(@Result, NCHAR(8203), N''); -- 零宽空格 ZWSP
SET @Result = REPLACE(@Result, NCHAR(65279), N''); -- BOM 零宽不换行空格
-- =====================================================
-- 2. 圆括号 / 方括号 / 花括号(中英文 + 全角)
-- =====================================================
SET @Result = REPLACE(@Result, NCHAR(40), N''); -- (
SET @Result = REPLACE(@Result, NCHAR(41), N''); -- )
SET @Result = REPLACE(@Result, NCHAR(65288), N''); -- (
SET @Result = REPLACE(@Result, NCHAR(65289), N''); -- )
SET @Result = REPLACE(@Result, NCHAR(91), N''); -- [
SET @Result = REPLACE(@Result, NCHAR(93), N''); -- ]
SET @Result = REPLACE(@Result, NCHAR(12304), N''); -- 【
SET @Result = REPLACE(@Result, NCHAR(12305), N''); -- 】
SET @Result = REPLACE(@Result, NCHAR(65339), N''); -- [
SET @Result = REPLACE(@Result, NCHAR(65341), N''); -- ]
SET @Result = REPLACE(@Result, NCHAR(123), N''); -- {
SET @Result = REPLACE(@Result, NCHAR(125), N''); -- }
SET @Result = REPLACE(@Result, NCHAR(65371), N''); -- {
SET @Result = REPLACE(@Result, NCHAR(65373), N''); -- }
-- =====================================================
-- 3. 引号(中英文 + 全角 + 直角引号)
-- =====================================================
SET @Result = REPLACE(@Result, NCHAR(34), N''); -- "
SET @Result = REPLACE(@Result, NCHAR(39), N''); -- '
SET @Result = REPLACE(@Result, NCHAR(8220), N''); -- “
SET @Result = REPLACE(@Result, NCHAR(8221), N''); -- ”
SET @Result = REPLACE(@Result, NCHAR(8216), N''); -- ‘
SET @Result = REPLACE(@Result, NCHAR(8217), N''); -- ’
SET @Result = REPLACE(@Result, NCHAR(65282), N''); -- "
SET @Result = REPLACE(@Result, NCHAR(65287), N''); -- '
SET @Result = REPLACE(@Result, NCHAR(12300), N''); -- 「
SET @Result = REPLACE(@Result, NCHAR(12301), N''); -- 」
SET @Result = REPLACE(@Result, NCHAR(12302), N''); -- 『
SET @Result = REPLACE(@Result, NCHAR(12303), N''); -- 』
-- =====================================================
-- 4. 书名号 / 尖括号
-- =====================================================
SET @Result = REPLACE(@Result, NCHAR(12298), N''); -- 《
SET @Result = REPLACE(@Result, NCHAR(12299), N''); -- 》
SET @Result = REPLACE(@Result, NCHAR(12296), N''); -- 〈
SET @Result = REPLACE(@Result, NCHAR(12297), N''); -- 〉
SET @Result = REPLACE(@Result, NCHAR(60), N''); -- <
SET @Result = REPLACE(@Result, NCHAR(62), N''); -- >
-- =====================================================
-- 5. 其他常见符号
-- =====================================================
SET @Result = REPLACE(@Result, NCHAR(183), N''); -- ·
SET @Result = REPLACE(@Result, NCHAR(8226), N''); -- •
-- =====================================================
-- 6. 首尾半角空格 trim
-- =====================================================
SET @Result = LTRIM(RTRIM(@Result));
RETURN @Result;
END;
GO
- THE END -
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://www.zzzmxxkj.com/352.html
共有 0 条评论