我正在处理一个非常大的数据库(10B + 行),该数据库对 SSN 和 BirthDate 执行匹配以尝试查找重复记录。该表正在使用列存储压缩(SQL SERVER 2016),我想到我可以将 SSN 保存为 DECIMAL(10,9) 以保留前导零而不是从 CHAR/VARCHAR 中获得性能损失。我只是想知道是否有人尝试过这个,或者是否有原因导致它无法按预期工作。我知道我可以转换为 INT 并只丢失前导零,但这对我来说似乎是一个更好的解决方案。
ISNULL(TRY_CAST('.' + SSN AS DECIMAL(10,9)),0) AS DecimalSSN
我总是可以将它转换回一个字符串RIGHT(TRY_CAST(DecimalSSN AS VARCHAR),9) AS SSN