首页 > 数据库 > mysql教程 > 如何有效地从 MySQL 字符串中删除非字母数字字符?

如何有效地从 MySQL 字符串中删除非字母数字字符?

Susan Sarandon
发布: 2024-11-30 16:30:12
原创
479 人浏览过

How Can I Efficiently Remove Non-Alphanumeric Characters from Strings in MySQL?

从 MySQL 中的字符串中剥离非字母数字字符

问题:

比较字符串时在 MySQL 中,可以通过删除所有非字母数字字符来提高效率。目前正在使用多个 REPLACE 函数,但正在寻求更高效、更优雅的解决方案。

解决方案:

对于 MySQL 8.0 或更高版本:

MySQL 现在支持正则表达式替换,可以使用单个字符删除非字母数字字符语句:

UPDATE {table} SET {column} = REGEXP_REPLACE({column}, '[^0-9a-zÀ-ÿ ]', '')
登录后复制

对于 MySQL 5.7 或更低版本:

正则表达式支持不可用。可以创建自定义函数“alphanum”来执行字符剥离:

DROP FUNCTION IF EXISTS alphanum;
DELIMITER |
CREATE FUNCTION alphanum( str CHAR(255) ) RETURNS CHAR(255) DETERMINISTIC
BEGIN
  DECLARE i, len SMALLINT DEFAULT 1;
  DECLARE ret CHAR(255) DEFAULT '';
  DECLARE c CHAR(1);
  IF str IS NOT NULL THEN
    SET len = CHAR_LENGTH( str );
    REPEAT
      BEGIN
        SET c = MID( str, i, 1 );
        IF c REGEXP '[[:alnum:]]' THEN
          SET ret=CONCAT(ret,c);
        END IF;
        SET i = i + 1;
      END;
    UNTIL i > len END REPEAT;
  ELSE
    SET ret='';
  END IF;
  RETURN ret;
END |
DELIMITER ;
登录后复制

然后可以使用此函数从字符串中剥离非字母数字字符:

select 'This works finally!', alphanum('This works finally!');
登录后复制

以上是如何有效地从 MySQL 字符串中删除非字母数字字符?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板