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

标签 mysql regex replace

我有一个名为 cartypes 的表,当前有 2 个字段:id 和 type。我正在添加子类型,我想将破折号 - 之后的内容从名为 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

最佳答案

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

关于MySQL - 查询将 1 个字段的部分内容移动到新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1633354/

相关文章:

mysql - 用于获取最后一个日期项目的 SQL 查询

javascript - 在Javascript中用空格和双引号分割字符串

java - 模式匹配的烦恼

r - 将值NA替换为R中另一列的值

javascript - 使用正则表达式在pgn(棋子)中的“注释”周围添加花括号

php - 在数据库更新之前检查客户端是否更改了 ID

mysql - SQL 显示从不更改但根据需要更新其他列的列的静态值

mysql - SELECT count(*) 比 SELECT count(*) 慢两倍,MySQL 中的 some_column

java - 文件名的正则表达式 - 限制名称大小和文件扩展名

c - 如何使用 Perl/其他东西搜索和替换 C 源代码中的特定代码行?