首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在MySQL中删除字符串中的所有非字母数字字符?

如何在MySQL中删除字符串中的所有非字母数字字符?
EN

Stack Overflow用户
提问于 2011-08-04 22:12:59
回答 12查看 110.4K关注 0票数 66

我正在编写一个比较字符串的例程,但为了提高效率,我需要删除除字母或数字之外的所有字符。

我现在使用了多个REPLACE函数,但也许有更快更好的解决方案?

EN

回答 12

Stack Overflow用户

发布于 2014-04-07 12:24:32

使用MySQL 8.0或更高版本

感谢Michal.jakubeczy的回答,现在MySQL支持Regex:

代码语言:javascript
复制
UPDATE {table} SET {column} = REGEXP_REPLACE({column}, '[^0-9a-zA-Z ]', '')

使用MySQL 5.7或更低版本

这里不支持正则表达式。我不得不创建我自己的函数alphanum,它为我剥离了字符:

代码语言:javascript
复制
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 ; 

现在我可以这样做了:

代码语言:javascript
复制
select 'This works finally!', alphanum('This works finally!');

我得到了:

代码语言:javascript
复制
+---------------------+---------------------------------+
| This works finally! | alphanum('This works finally!') |
+---------------------+---------------------------------+
| This works finally! | Thisworksfinally                |
+---------------------+---------------------------------+
1 row in set (0.00 sec)

万岁!

票数 94
EN

Stack Overflow用户

发布于 2011-08-04 22:39:09

从性能的角度来看,(并且假设你读的比写的多)

我认为最好的方法是预先计算并存储列的剥离版本,这样可以减少转换。

然后,您可以在新列上建立索引,并让数据库为您完成这项工作。

票数 22
EN

Stack Overflow用户

发布于 2019-10-08 15:27:03

从MySQL 8.0开始,您可以使用正则表达式从字符串中删除非字母数字字符。有一个REGEXP_REPLACE方法

以下是删除非字母数字字符的代码:

代码语言:javascript
复制
UPDATE {table} SET {column} = REGEXP_REPLACE({column}, '[^0-9a-zA-Z ]', '')
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6942973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档