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

标签 mysql regex

我有一个关键字列,它包含如下内容:

apples, oranges, pine apple

我正在尝试使用此查询将空格更改为连字符"

UPDATE articles SET keywords = REPLACE(keywords," ","-") WHERE
keywords REGEXP '[A-Z] [A-Z]' limit 1;

但这会在我不需要的地方添加连字符,如下所示:

apples,-oranges,-pine-apple

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

谢谢。

最佳答案

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

有一些选项可以在 MySQL 中添加基于正则表达式的搜索和替换,例如 UDF , 和 MariaDB supports it natively :

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

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

关于mysql - 在有限的情况下使用 REGEXP 将空格更改为连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35075198/

相关文章:

mysql - 针对查询的通配符匹配导致分数 = 0 (php/sql)

mysql - 显示以前在 Picturebox 中扫描或检索的图像

MYSQL 趋势查询

mysql - 选择过去 3 个月每月的平均销售数量

regex - 来自串行流的 Sed

regex - 创建正则表达式模式以匹配 "string/uuid"模式

java - 扩大数字范围

MySQL 为大表优化变量

javascript - 理解这个正则表达式示例

java - 正则表达式匹配正斜杠之后或中间的单词