如何在SQL Server中为字母数字混合的ID添加空格
SQL Server实现ID列字母与数字间添加空格的方法
针对你给出的ID格式(前缀字母+4位数字+后缀字母),可以通过SQL Server的字符串函数组合实现格式转换,具体如下:
查询转换结果(不修改原数据)
执行以下SQL语句可直接查看转换后的ID:
SELECT CONCAT( -- 提取前缀字母部分 LEFT(ID, PATINDEX('%[0-9]%', ID) - 1), ' ', -- 提取中间数字部分 SUBSTRING( ID, PATINDEX('%[0-9]%', ID), (LEN(ID) - PATINDEX('%[0-9]%', REVERSE(ID)) + 1) - PATINDEX('%[0-9]%', ID) + 1 ), ' ', -- 提取后缀字母部分 RIGHT(ID, LEN(ID) - (LEN(ID) - PATINDEX('%[0-9]%', REVERSE(ID)) + 1)) ) AS FormattedID FROM YourTable;
直接更新原表数据
如果需要永久修改表中的ID值,执行以下UPDATE语句:
UPDATE YourTable SET ID = CONCAT( LEFT(ID, PATINDEX('%[0-9]%', ID) - 1), ' ', SUBSTRING( ID, PATINDEX('%[0-9]%', ID), (LEN(ID) - PATINDEX('%[0-9]%', REVERSE(ID)) + 1) - PATINDEX('%[0-9]%', ID) + 1 ), ' ', RIGHT(ID, LEN(ID) - (LEN(ID) - PATINDEX('%[0-9]%', REVERSE(ID)) + 1)) );
关键函数说明
PATINDEX('%[0-9]%', ID):定位ID中第一个数字的起始位置PATINDEX('%[0-9]%', REVERSE(ID)):通过反转ID定位最后一个数字的位置,推算出原ID中数字部分的结束索引LEFT/SUBSTRING/RIGHT:分别提取前缀字母、中间数字、后缀字母片段,最终用CONCAT拼接并插入空格
内容的提问来源于stack exchange,提问作者Insan Cahya
相关产品推荐
相关产品推荐

