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

时间:2018-07-09 20:23:26

标签: mysql sql regex

我的“车辆”表中有一个“模型”字段(条目少于59,000),其值可能类似于:

Roadline (09-14)

如果要删除(XX-XX),我想删除它,并在字段名称中填写“已处理”值。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

一个非常简单的解决方案是使用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