数据库;查找和替换

标签 mysql sql regex

在我的 MySQL 数据库中,我有一些这样的字符串:

我有点东西,Infos S.12

我要搜索的模式是:, Infos S.,比数字(只有数字)和字符串结尾。它不区分大小写。

如何搜索并删除它?

我有这个 I'm something, Infos S.12 我想要 I'm something

这是我目前所拥有的:

更新 my_table SET title_col = REPLACE(title_col, SUBSTRING(title_col, LOCATE(', Infos S.', title_col), LENGTH(title_col) - LOCATE(')', REVERSE(title_col)) - LOCATE( ', Infos S. ', title_col) + 2), '') WHERE title_col LIKE '%(%)%';

剩下的怎么办?

编辑: 如果还有另一个逗号,则应将其忽略。

意思是:I'm, something, Infos S.12(注意 I'm 后的逗号)应该得到 I'm, something.

最佳答案

您可以使用 regexp 检查列是否具有指定的模式,然后使用 substring 将子字符串更新到 , .

UPDATE my_table 
SET title_col = SUBSTRING(title_col,1,locate(', Infos',title_col)-1) 
WHERE title_col regexp ', Infos S\\. [0-9]+$'

regexp 匹配默认不区分大小写。如果要使其区分大小写,请使用 regexp binary

where title_col regexp binary ', Infos S\\. [0-9]+$'

关于数据库;查找和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40471352/

相关文章:

MySQL多表SELECT

php - sql Like搜索如何根据搜索结果从一张表中提取数据

mysql - 如何在 MySQL 更新时合并具有重复唯一键的行

MySQL 变量返回错误值

sql - Access - row_number 函数?

php - 如何在单个函数中执行两个表列数据

regex - 单引号中的双引号,反之亦然

java - 正则表达式允许字符模式但不允许来自该模式的单个字符

Ruby 正则表达式替换两个数字之间的字符

MySQL 搜索并显示多个表