如何在SQL中为VARCHAR列补全缺失小数点的10位HTS编码?
补全HTS编码的小数点格式
解决方案
针对10位纯数字格式的HTS编码,通过字符串拆分拼接的方式添加小数点,以下是主流数据库的实现语句:
MySQL/MariaDB
先验证要更新的结果(强烈建议先执行此步骤确认):
SELECT hts_column, CONCAT( SUBSTRING(hts_column, 1, 4), '.', SUBSTRING(hts_column, 5, 2), '.', SUBSTRING(hts_column, 7, 4) ) AS formatted_hts FROM your_table WHERE LENGTH(hts_column) = 10 AND hts_column REGEXP '^[0-9]{10}$';
确认结果无误后执行更新:
UPDATE your_table SET hts_column = CONCAT( SUBSTRING(hts_column, 1, 4), '.', SUBSTRING(hts_column, 5, 2), '.', SUBSTRING(hts_column, 7, 4) ) WHERE LENGTH(hts_column) = 10 AND hts_column REGEXP '^[0-9]{10}$';
PostgreSQL
验证语句:
SELECT hts_column, SUBSTR(hts_column, 1, 4) || '.' || SUBSTR(hts_column, 5, 2) || '.' || SUBSTR(hts_column, 7, 4) AS formatted_hts FROM your_table WHERE LENGTH(hts_column) = 10 AND hts_column ~ '^[0-9]{10}$';
更新语句:
UPDATE your_table SET hts_column = SUBSTR(hts_column, 1, 4) || '.' || SUBSTR(hts_column, 5, 2) || '.' || SUBSTR(hts_column, 7, 4) WHERE LENGTH(hts_column) = 10 AND hts_column ~ '^[0-9]{10}$';
关键说明
WHERE条件精准筛选出10位纯数字的行,避免误修改已正确格式化或存在异常的编码- 执行更新前务必备份数据,或者通过
SELECT预览结果,防止操作失误
内容的提问来源于stack exchange,提问作者VINIJR
相关产品推荐
相关产品推荐

