MySQL - 查询将1个字段的内容的一部分移动到新字段

时间:2009-10-27 20:08:29

标签: mysql regex replace

我有一个名为cartypes的表,目前有2个字段:id&类型。我正在添加子类型,我想从名为type的字段中移动破折号-之后的内容,并将这些内容放入子类型中。处理破折号(任何额外的空白也是如此)。什么是最好的SQL查询?

之前:

id        type                                      subtype (currently empty)
------------------------------------------------------------------------------
1     legendary muscle car  - steel          
2     crappy sedan - plasticky interior
3     legendary sports car  - aluminum bodywork
4     compact car

后:

id        type                     subtype
---------------------------------------------------------------
1     legendary muscle car        steel          
2     crappy sedan                plasticky interior
3     legendary sports car        aluminum bodywork
4     compact car

2 个答案:

答案 0 :(得分:2)

UPDATE table
 SET subtype = TRIM(SUBSTRING(type, LOCATE('-', type) + 1)),
     type = TRIM(SUBSTRING(type, 1, LOCATE('-', type) - 1))
 WHERE type LIKE '%-%';

答案 1 :(得分:1)

这是一个更新语句,涉及两个SUBSTR()(每个新列一个)和原始列上的字符串LOCATE()。我并没有真正使用MySQL,但这个技巧无处不在,只是字符串查找例程的语法发生了变化。