我有一个数字数据: 123456789
我需要将其转换为: 123-45-6789
如果我的数据如下:56789和456789 它应该转换为:5-6789和-45-6789
我需要一个sql查询来根据数据自动获取(列)。
答案 0 :(得分:0)
您不应该使用sql格式化结果,例外是日期和时间。您应该在代码中格式化结果
答案 1 :(得分:0)
您似乎想要从字符串的末尾开始计算。我会建议这样的事情:
select (case when len(str) <= 4 then str
when len(str) = 5 then left(str, 1) + '-' + right(str, 4)
when len(str) > 5 then stuff(str, 1, len(str) - 6, '') + '-' + left(right(str, 6), 2) + '-' + right(str, 4)
end)
答案 2 :(得分:0)
这样的东西?:
select FORMAT(@yourNumber, N'###-##-####')
您可以在此处找到有关FORMAT方法的更多信息: https://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql
答案 3 :(得分:0)
又一个选择
Declare @YourTable table (SomeCol int)
Insert Into @YourTable values
(123456789)
,(56789)
,(456789)
,(6789)
Select *
,ltrim(replace(stuff(stuff(str(SomeCol,9),6,0,'-'),4,0,'-'),' -',''))
From @YourTable
返回
SomeCol (No column name)
123456789 123-45-6789
56789 5-6789
456789 45-6789
6789 6789