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

Mysql 如果字符串与模式匹配,则删除该字符串的匹配部分,mysql,sql,regex,Mysql,Sql,Regex,我的表Vehicles中有一个字段模型,其条目略低于59000条,其值可能类似于: Roadline (09-14) 我想删除XX-XX(如果存在),并将处理过的值填入字段modelname 任何帮助都将不胜感激 一个非常简单的解决方案是在开始之前使用隔离部分。您可以使用来确保模式匹配,但遗憾的是,您不能使用它来捕获匹配 SELECT model, CASE WHEN model REGEXP '\\([0-9]+-[0-9]+\\)$' THEN SUBSTRING_INDE

我的表Vehicles中有一个字段模型,其条目略低于59000条,其值可能类似于:

Roadline (09-14)
我想删除XX-XX(如果存在),并将处理过的值填入字段modelname


任何帮助都将不胜感激

一个非常简单的解决方案是在开始之前使用隔离部分。您可以使用来确保模式匹配,但遗憾的是,您不能使用它来捕获匹配

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

向我们显示数据库模式、示例数据、当前和预期输出。请阅读,这里是学习如何提高问题质量和获得更好答案的好地方。尝试在中创建一个示例,也许您可以建议我如何在没有XX-XX的情况下捕获数据,并将其更新为字段modelname。谢谢@吉姆看到了修改过的答案。请注意,如果模型包含多个,它将不起作用。谢谢。我会试试看,然后回来汇报。