首页 > 解决方案 > 去除所有非字母数字字符和非集合标点

问题描述

嗨,我采用了一个函数来从字符串中去除字母数字字符和一些标点字符。

ALTER FUNCTION [dbo].[Remove_Non_Alphanumeric]
    (@String_Parameter VARCHAR(MAX)) 
RETURNS VARCHAR(MAX)
AS
BEGIN
    DECLARE @Alphanumeric_Characters VARCHAR(289) = '%[^A-Za-z0-9| |?|,|&|\|/|.|'+CHAR(13)+'|'+CHAR(10)+'|(|)|]|[|-]%';
 
    WHILE PATINDEX(@Alphanumeric_Characters, @String_Parameter) > 0
    BEGIN
        SELECT @String_Parameter = STUFF(@String_Parameter, PATINDEX(@Alphanumeric_Characters, @String_Parameter), 1, '');
    END

    RETURN @String_Parameter;
END

这似乎主要工作。但是,有些奇怪的段落返回了一些字符?更奇怪的是,还有一些要点被更改为?还有其他人。尽管两者都不在我的可接受角色列表中。

标签: sqlsql-serverregexfunctionsql-server-2016

解决方案


推荐阅读