单个 MYSQL 正则表达式覆盖在开始、结束、两者或 none 中具有特定字符的行
Single MYSQL regex to cover rows with a certain character in start, end, both or none
假设我想从 MYSQL 列数据中删除某个字符串,例如 NOTE
。
在数据库中,数据的结构可以是PEN, PAPER, NOTE
、PEN, NOTE, PAPER
、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 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.
假设我想从 MYSQL 列数据中删除某个字符串,例如 NOTE
。
在数据库中,数据的结构可以是PEN, PAPER, NOTE
、PEN, NOTE, PAPER
、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 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.