在有限的情况下使用REGEXP将空格更改为连字符

时间:2016-01-29 01:09:54

标签: mysql regex

我有一个关键字列,它包含这样的内容:

  苹果,橘子,松苹果

我正在尝试使用此查询“

将空格更改为连字符
UPDATE articles SET keywords = REPLACE(keywords," ","-") WHERE
keywords REGEXP '[A-Z] [A-Z]' limit 1;

但是这会添加连字符,我不想要它们,就像这样:

  

苹果,-oranges,-pine-苹果

这可以用REGEXP完成吗?或者我需要涉及PHP吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

您正在根据正则表达式选择行,但REPLACE()如何知道?它将用连字符替换空格,就像你告诉它的那样。

在MySQL中添加基于regexp的搜索和替换有一些选项,例如UDFMariaDB supports it natively

UPDATE articles SET keywords = REGEXP_REPLACE(keywords, "[A-Z] [A-Z]", "-");

另外值得一提的是,没有LIMIT子句的ORDER BY子句不是很有帮助。