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