首页 > 解决方案 > 如何使用 MYSQL 替换数值(版本)?

问题描述

我正在构建一个文档版本控制 Intranet 网站。我有大约 1700 个书名,其中包括类似的版本

如何从所有文档标题名称中删除文档版本 xxx 或 xx。

因为我想在首页上发布所有没有版本名称的标题列表。

我尝试在 MYSQL 中替换点的REPLACE函数,但它也替换了 S3 中的 3 和 HTML5 中的 5。

update book_title_all set title=REGEXP_REPLACE(title,'[0-9]','')
update book_title_all set title=REPLACE(title,'.','')

我希望只替换 xxx / xx 格式的数字字符串。

标签: mysqldatabasereplacephpmyadmin

解决方案


如果你运行的是 MySQL 8+,那么这个REGEXP_REPLACE函数在这里就派上用场了:

UPDATE book_title_all
SET title = TRIM(REGEXP_REPLACE(title, '\s*[0-9]+(\.[0-9]+)+\s*', ' '))
WHERE title REGEXP '[0-9]+\.[0-9]+';

这里的想法是用一个空格替换每个版本 string1.2.3.4以及围绕它的可选空格。这样可以在替换后保持标题的格式干净。请注意,这会创建一个边缘情况,其中版本字符串出现在标题的开头或结尾。在这种情况下,我们的替换会留下额外的空间。需要调用 toTRIM()来删除它。


推荐阅读