我的车辆表(包含不到 59,000 个条目)中有一个字段“型号”,其值可能类似于:
Roadline (09-14)
我想删除 (XX-XX)(如果存在)并将“已处理”值填充到字段模型名称中。
任何帮助将不胜感激!
最佳答案
一个非常简单的解决方案是使用 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
关于mysql - 如果字符串与模式匹配,则删除字符串的匹配部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51253480/