You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL基于条件判断新增列:拆分4字符字段按规则拼接生成新列

实现方案

以下是兼容绝大多数主流数据库的标准SQL写法,你可以直接替换表名后使用:

1. 直接查询得到所需字段

SELECT 
  col1,
  LEFT(col1, 2) AS `left`,
  RIGHT(col1, 2) AS rght,
  CONCAT(
    RIGHT(col1, 2),
    '.',
    -- 编码映射逻辑,CASE是标准SQL语法,兼容性最高
    CASE LEFT(col1, 2)
      WHEN 'xx' THEN 1
      WHEN 'xy' THEN 2
      WHEN 'xz' THEN 3
    END
  ) AS fin
FROM 你的实际表名;

2. 如需给原表新增fin字段存储结果(以MySQL为例)

-- 第一步:新增fin字段,长度根据你的实际数据调整即可
ALTER TABLE 你的实际表名 ADD COLUMN fin VARCHAR(10);

-- 第二步:批量更新fin字段值
UPDATE 你的实际表名
SET fin = CONCAT(
    RIGHT(col1, 2),
    '.',
    CASE LEFT(col1, 2)
      WHEN 'xx' THEN 1
      WHEN 'xy' THEN 2
      WHEN 'xz' THEN 3
    END
  )
-- 可以加筛选条件保证只处理长度为4的col1数据,避免出错
WHERE LENGTH(col1) = 4;

逻辑说明

  • 拆分逻辑:LEFT(col1,2)直接取字符串前2位,RIGHT(col1,2)直接取字符串后2位,你要求的对半拆分需求可以直接用这两个函数实现
  • 编码逻辑:用CASE语句做映射比多层IF嵌套可读性更高、更易维护,如果确实需要用IF语法,MySQL环境下可以替换为以下写法:
    IF(LEFT(col1,2)='xx', 1, IF(LEFT(col1,2)='xy', 2, IF(LEFT(col1,2)='xz', 3, NULL)))
    
  • 拼接逻辑:用CONCAT函数按顺序拼接右半部分、.、编码值即可得到目标fin字段

内容的提问来源于stack exchange,提问作者littletimmy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:45:04