单个 MYSQL 正则表达式覆盖在开始、结束、两者或 none 中具有特定字符的行

Single MYSQL regex to cover rows with a certain character in start, end, both or none

假设我想从 MYSQL 列数据中删除某个字符串,例如 NOTE。 在数据库中,数据的结构可以是PEN, PAPER, NOTEPEN, NOTE, PAPERNOTE等。 因为我无法预测逗号字符放在哪里, 我有这些更新语句。

UPDATE from table
SET column = replace(column, ',NOTE','')
WHERE column like '%NOTE%';

UPDATE from table
SET column = replace(column, 'NOTE,','')
WHERE column like '%NOTE%';

UPDATE from table
SET column = replace(column, 'NOTE','')
WHERE column like '%NOTE%';

是否有更优雅的方式来代替三个 UPDATE 语句?

谢谢!

在 SQL 中进行字符串操作绝非易事,因此我们可以改进您的任务的程度有限。

但是您可以通过这种方式执行您在一个更新中描述的内容:

UPDATE from table
SET column = REPLACE(REPLACE(REPLACE(column, ',NOTE',''), 'NOTE,', ''), 'NOTE', '')
WHERE column like '%NOTE%';

这有关于匹配单词边界的常见注意事项,因此 NOTE 将匹配更大的单词,例如 NOTEWORTHY 等。除非您升级到 MySQL,否则您无能为力。 8.0.