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

如何在MySQL中将账号101000002035转换为101-000002-03-5格式?

MySQL账号格式转换:101000002035 → 101-000002-03-5

当然可以实现这个格式转换!在MySQL里,我们可以通过字符串截取+拼接的方式轻松搞定,下面分两种场景给你具体方案:

1. 查询时临时转换格式(不修改原数据)

如果只是想在查询结果中看到格式化后的账号,不需要改动表中的原始数据,可以用SUBSTRING截取各段,再用CONCAT拼接分隔符:

SELECT 
    CONCAT(
        SUBSTRING(account_col, 1, 3), '-',  -- 截取前3位:101
        SUBSTRING(account_col, 4, 6), '-',  -- 截取第4到第9位(共6位):000002
        SUBSTRING(account_col, 10, 2), '-', -- 截取第10到第11位(共2位):03
        SUBSTRING(account_col, 12, 1)       -- 截取最后1位:5
    ) AS formatted_account
FROM your_table;

关键注意点:

  • 确保你的账号字段是字符串类型(比如VARCHAR),如果是数值类型(INT/BIGINT),需要先转成字符串,否则前导零会丢失:
    SELECT 
        CONCAT(
            SUBSTRING(CAST(account_col AS CHAR), 1, 3), '-',
            SUBSTRING(CAST(account_col AS CHAR), 4, 6), '-',
            SUBSTRING(CAST(account_col AS CHAR), 10, 2), '-',
            SUBSTRING(CAST(account_col AS CHAR), 12, 1)
        ) AS formatted_account
    FROM your_table;
    

2. 直接更新表中的账号格式(修改原数据)

如果需要永久修改表中的账号格式,用UPDATE语句即可,但操作前一定要备份数据,或者先加WHERE条件测试避免误改全表:

UPDATE your_table
SET account_col = CONCAT(
    SUBSTRING(account_col, 1, 3), '-',
    SUBSTRING(account_col, 4, 6), '-',
    SUBSTRING(account_col, 10, 2), '-',
    SUBSTRING(account_col, 12, 1)
);

同样,如果字段是数值类型,记得先转字符串:

UPDATE your_table
SET account_col = CONCAT(
    SUBSTRING(CAST(account_col AS CHAR), 1, 3), '-',
    SUBSTRING(CAST(account_col AS CHAR), 4, 6), '-',
    SUBSTRING(CAST(account_col AS CHAR), 10, 2), '-',
    SUBSTRING(CAST(account_col AS CHAR), 12, 1)
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:49:20