0
此任務是否有內置功能?如果沒有,那怎麼辦?它是varchar(20)
,它只包含整數。例如,309000 -> 309,000
。如何在Microsoft Server SQL中爲字符串每3個字符添加逗號?
有什麼想法?
感謝,
此任務是否有內置功能?如果沒有,那怎麼辦?它是varchar(20)
,它只包含整數。例如,309000 -> 309,000
。如何在Microsoft Server SQL中爲字符串每3個字符添加逗號?
有什麼想法?
感謝,
可以使用級聯CASE語句,它可以放入功能
case
when i > 999999999 then STUFF(STUFF(STUFF(i,2,0,','),6,0,','),10,0,',')
when i > 999999 then STUFF(STUFF(i,LEN(i)-5,0,','),len(i)-1,0,',')
when i > 999 then STUFF(i,LEN(i)-2,0,',')
else CONVERT(varchar(10),i)
end
注意請牢記返回的數據是不再是數,所以你前端代碼將無法將其用作數字。我總是建議通過前端代碼完成的格式化。
例如
select col1, col2, col3,
case
when i > 999999999 then STUFF(STUFF(STUFF(i,2,0,','),6,0,','),10,0,',')
when i > 999999 then STUFF(STUFF(i,LEN(i)-5,0,','),len(i)-1,0,',')
when i > 999 then STUFF(i,LEN(i)-2,0,',')
else CONVERT(varchar(10),i)
end int_with_commas_as_varchar
from tbl
,或者創建一個功能
create function dbo.formatThousands(@i int)
returns varchar(20) as
begin
return
case
when @i > 999999999 then STUFF(STUFF(STUFF(@i,2,0,','),6,0,','),10,0,',')
when @i > 999999 then STUFF(STUFF(@i,LEN(@i)-5,0,','),len(@i)-1,0,',')
when @i > 999 then STUFF(@i,LEN(@i)-2,0,',')
else CONVERT(varchar(10),@i)
end
end
它是一個VARCHAR列或INT /數字/浮動?它包含哪些類型的數據(僅限int,小數)? – RichardTheKiwi 2011-03-25 23:22:03
@Richard aka cyberkiwi:它是'varchar(20)',它只包含整數。謝謝。 – Chan 2011-03-25 23:23:58
業務層不應該處理這個問題而不是數據訪問層。 – 2011-03-25 23:34:36