2016-11-07 119 views
2

在我的MySQL数据库我有一些字符串这样的: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

回答

2

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

对于不区分大小写,您的意思是例如'infos'而不是'Infos',对吧? – David

+0

是的..确切地说...小写/大写字母组合*信息*太.. –

+0

好的,谢谢,但在我的情况并不重要。 – David