如果字符串与模式匹配,则删除匹配的部分

1cklez4t  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(415)

我的表vehicles中有一个字段“model”(只有不到59000个条目),其值可能如下所示:

Roadline (09-14)

如果存在(xx xx),我想删除它,并将“treated”值填入字段modelname。
任何帮助都将不胜感激!

5f0d552i

5f0d552i1#

一个非常简单的解决方案是 SUBSTRING_INDEX 把之前的部分隔离 ( . 你可以用 REGEXP 以确保模式匹配,但不幸的是,您不能使用它来捕获匹配。

SELECT
  model,
  CASE
    WHEN model REGEXP '\\([0-9]+-[0-9]+\\)$' THEN SUBSTRING_INDEX(model, '(', 1)
    ELSE model
  END AS modelname
FROM vehicles

确保数据看起来正常后,可以像这样更新另一列:

UPDATE vehicles
SET modelname = CASE
  WHEN model REGEXP '\\([0-9]+-[0-9]+\\)$' THEN SUBSTRING_INDEX(model, '(', 1)
  ELSE model
END

相关问题