gpt4 book ai didi

mysql - 如何从 MySQL 中的字符串中删除所有非字母数字字符?

转载 作者:IT老高 更新时间:2023-10-28 12:55:11 26 4
gpt4 key购买 nike

我正在开发一个比较字符串的例程,但为了提高效率,我需要删除所有不是字母或数字的字符。

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

最佳答案

使用 MySQL 8.0 或更高版本

感谢 michal.jakubeczy 的回答,MySQL 现在支持用 Regex 替换:

UPDATE {table} SET {column} = REGEXP_REPLACE({column}, '[^0-9a-zA-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!');

我得到:

+---------------------+---------------------------------+
| This works finally! | alphanum('This works finally!') |
+---------------------+---------------------------------+
| This works finally! | Thisworksfinally |
+---------------------+---------------------------------+
1 row in set (0.00 sec)

万岁!

关于mysql - 如何从 MySQL 中的字符串中删除所有非字母数字字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6942973/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com