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

如何在SQL中向固定长度字符串中间插入指定文本?

字符串中间插入字符的解决方案

核心逻辑

你的需求是在8位字符串的第6、7位之间插入00,可以通过字符串截取+拼接实现,完全不需要lpad/rpad:

  • 先截取字符串的前6位
  • 拼接00
  • 再截取原字符串从第7位开始的剩余部分(也就是最后2位)
  • 把这三部分拼起来就是目标结果

主流数据库的实现代码

1. MySQL/MariaDB

用SUBSTRING截取,CONCAT拼接:

-- 先测试单个值验证逻辑
SELECT CONCAT(SUBSTRING('gr123465', 1, 6), '00', SUBSTRING('gr123465', 7)) AS result;
-- 输出:gr12340065

创建存储过程批量更新表数据:

DELIMITER //
CREATE PROCEDURE InsertTwoZeros()
BEGIN
    -- 替换成你的表名和列名
    UPDATE your_table 
    SET target_column = CONCAT(SUBSTRING(target_column, 1, 6), '00', SUBSTRING(target_column, 7));
END //
DELIMITER ;

-- 执行存储过程
CALL InsertTwoZeros();

2. Oracle

用SUBSTR截取,||做拼接:

-- 测试单个值验证逻辑
SELECT SUBSTR('gr123465', 1, 6) || '00' || SUBSTR('gr123465', 7) AS result FROM DUAL;
-- 输出:gr12340065

创建存储过程:

CREATE OR REPLACE PROCEDURE InsertTwoZeros AS
BEGIN
    UPDATE your_table 
    SET target_column = SUBSTR(target_column, 1, 6) || '00' || SUBSTR(target_column, 7);
END;
/

-- 执行存储过程
EXEC InsertTwoZeros;

3. SQL Server

用SUBSTRING截取,CONCAT拼接:

-- 测试单个值验证逻辑
SELECT CONCAT(SUBSTRING('gr123465', 1, 6), '00', SUBSTRING('gr123465', 7, 2)) AS result;
-- 输出:gr12340065

创建存储过程:

CREATE PROCEDURE InsertTwoZeros
AS
BEGIN
    UPDATE your_table 
    SET target_column = CONCAT(SUBSTRING(target_column, 1, 6), '00', SUBSTRING(target_column, 7, 2));
END;
GO

-- 执行存储过程
EXEC InsertTwoZeros;

注意事项

  • 你的列类型是varchar(10),原字符串8位,插入00后刚好是10位,不会超出长度限制
  • 记得把代码里的your_table和target_column替换成你实际的表名和列名
  • 执行更新前建议先备份数据,或者用SELECT语句验证结果正确后再执行UPDATE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 17:39:24