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

如何将多种格式的美国社保号(SSN)统一为标准格式?

统一混乱格式SSN为标准格式的解决方案

要统一所有非标准格式的SSN为123-45-0000,核心思路是先清理所有非数字字符,得到纯数字的SSN,再对纯数字序列添加标准分隔符。不管原始格式里的分隔符是空格、逗号、连字符还是混合形式,都能通过这个思路统一处理。

方法1:嵌套REPLACE清理非数字(兼容所有SQL Server版本)

通过多次REPLACE去掉所有非数字字符(空格、逗号、连字符等),再用你已掌握的STUFF方法插入分隔符:

DECLARE @ssn VARCHAR(20) = '123,45-0000,' -- 示例混乱格式
-- 步骤1:清理所有非数字字符
DECLARE @clean_ssn VARCHAR(9) = REPLACE(REPLACE(REPLACE(@ssn, '-', ''), ' ', ''), ',', '')
-- 步骤2:生成标准格式
SELECT STUFF(STUFF(@clean_ssn, 4, 0, '-'), 7, 0, '-') AS Social_Security_Number

方法2:使用TRANSLATE简化清理(SQL Server 2017+)

如果你的SQL Server版本是2017及以上,可用TRANSLATE一次性替换多种非数字字符,代码更简洁:

DECLARE @ssn VARCHAR(20) = '123 45-0000' -- 示例混乱格式
DECLARE @clean_ssn VARCHAR(9) = TRANSLATE(@ssn, '- ,', '   ') -- 将-、空格、逗号替换为空
SET @clean_ssn = REPLACE(@clean_ssn, ' ', '')
SELECT STUFF(STUFF(@clean_ssn, 4, 0, '-'), 7, 0, '-') AS Social_Security_Number

批量处理表中数据

如果要处理整个表的SSN列,直接把变量替换为列名即可:

SELECT 
    STUFF(STUFF(
        REPLACE(REPLACE(REPLACE(ssn_column, '-', ''), ' ', ''), ',', ''),
        4, 0, '-'), 7, 0, '-') AS Standardized_SSN
FROM your_table_name

验证覆盖所有测试格式

以上方法可以处理你列出的所有混乱格式:

  • 123-45-0000 → 清理后仍为123450000 → 输出123-45-0000
  • 123 45 0000 → 清理后123450000 → 输出123-45-0000
  • 123450000 → 直接格式化 → 输出123-45-0000
  • 123-45 0000 → 清理后123450000 → 输出123-45-0000
  • 123,45,0000, → 清理后123450000 → 输出123-45-0000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:55:30