MySQL的;查找和替换

时间:2016-11-07 17:46:49

标签: mysql sql regex

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

I'm something, Infos S. 12

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

如何搜索并删除它?

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

这是我到目前为止所做的:

UPDATE 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

1 个答案:

答案 0 :(得分:1)

您可以使用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]+$'