如何在SQL中按规则替换ID列第1、2、4位数字为指定字母
实现思路
直接对ID字符串按位置截取拼接即可,逻辑简单性能也优于正则替换,规则拆解后对应逻辑:
- 固定拼接开头的
NX(对应替换第1、2位) - 拼接原ID的第3位字符(保留原位置内容)
- 固定拼接字符
D(对应替换第4位) - 拼接原ID从第5位开始的所有剩余内容
如果你的ID列是数值类型,需要先转成字符串类型再处理,避免长度计算出错。
不同数据库实现代码
MySQL 写法
SELECT `Group`, CONCAT('NX', SUBSTRING(ID,3,1), 'D', SUBSTRING(ID,5)) AS ID FROM 你的表名;
ID为数值类型时调整为:
SELECT `Group`, CONCAT('NX', SUBSTRING(CAST(ID AS CHAR),3,1), 'D', SUBSTRING(CAST(ID AS CHAR),5)) AS ID FROM 你的表名;
PostgreSQL 写法
SELECT "Group", 'NX' || SUBSTRING(ID::text, 3, 1) || 'D' || SUBSTRING(ID::text, 5) AS ID FROM 你的表名;
SQL Server 写法
SELECT [Group], 'NX' + SUBSTRING(CAST(ID AS VARCHAR(100)),3,1) + 'D' + SUBSTRING(CAST(ID AS VARCHAR(100)),5, LEN(ID)) AS ID FROM 你的表名;
注意:
Group是SQL保留关键字,查询时需要用对应数据库的转义符包裹(MySQL用反引号、PostgreSQL用双引号、SQL Server用方括号),避免语法报错。
内容的提问来源于stack exchange,提问作者tj judge
相关产品推荐
相关产品推荐

