mysql - 如何使用 MYSQL 替换数值(版本)?
问题描述
我正在构建一个文档版本控制 Intranet 网站。我有大约 1700 个书名,其中包括类似的版本
- 傻瓜书 1.2
- 试卷 HTML5 Class 3.5.7 学生
- 学习 Amazon S3 Deployment 1.3.4.3 著作
如何从所有文档标题名称中删除文档版本 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 格式的数字字符串。
解决方案
如果你运行的是 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()
来删除它。
推荐阅读
- javascript - 生成一个 flexbox 布局并用两个 JavaScript 函数动态填充它
- c++ - 包含 unique_ptr 的 unique_ptr
- selenium - 错误:会话 ID 为空。调用 quit() 后使用 WebDriver?- 并行执行 - AfterMethod driver.quit/close
- c# - CS1001 标识符应在 Unity 中使用
- heroku - 无法使用 heroku salesforce auth 登录
- r - 使用 Ranger 计算多分类的混淆矩阵或列联表时出错
- excel - 创建 QueryTable 时 Excel 出现意外错误
- python - 连接多个卷积块:“应在至少 2 个输入的列表上调用“连接”层”
- javascript - 随机形状背景生成器
- android - ARToolKit Android 导入自定义 3d 模型 (.obj)