gpt4 book ai didi

sql - T SQL 格式 SSN/IN (SQL Server 2016+)

转载 作者:行者123 更新时间:2023-12-05 03:38:58 26 4
gpt4 key购买 nike

US SSN/TIN 字符串看起来有效时,我需要将它们格式化为破折号
(其中有效 = 9 位数字),否则返回字段中的内容(前导 0)。

123456789 应格式化为 123-45-6789
3456789 格式为 003-45-6789

谁能告诉我为什么这段代码不起作用?

Declare @TaxIDNum VarChar(11)
Set @TaxIDNum = '3456789'
Set @TaxIDNum = Right('0000'+@TaxIDNum,9)
Set @TaxIDNum =
CASE @TaxIDNum WHEN Len(@TaxIDNum)=9 THEN
CASE @TaxIDNum
WHEN IsNumeric(@TaxIDNum)
THEN Left(@TaxIDNum,3)+'-'+Right(Left(@TaxIDNum,5),2)+'-'+Right(@TaxIDNum,4)
ELSE @TaxIDNum END -- return existing value
ELSE @TaxIDNum END -- return existing value
select @TaxIDNum, len(@TaxIDNum) as Length

I get a red squiggly error on the equals in "=9":
(Error text is: "Incorrect syntax near '='.")

欢迎任何既适用于选择或集合又能解决问题的解决方案。


感谢@Larnu 提到 Set @TaxIDNum=FORMAT(CONVERT(int,@TaxIDNum),'000-00-0000')

如果我有错误处理(我们的 SSvr 安装没有)我会使用 Format。但是,如果有错误数据,它会以一种我无法恢复的方式中断我的查询。

Set @TaxIDNum=Replace('123-45-6789','-','') 如果唯一的数据问题是某些行已经格式化,则可以避免错误。

最佳答案

看起来你可以使用FORMAT:

SELECT FORMAT(CONVERT(int,@TaxIDNum),'000-00-0000');

关于sql - T SQL 格式 SSN/IN (SQL Server 2016+),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68757919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com