导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

强制显示整数的符号问题。如何让正数前有+,负数前有-?

fromv 2004-09-05 09:59:33
如题
...全文
115 点赞 收藏 11
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fromv 2004-09-05
有可能出现32±0的情况,所以应该
create function IntToSignStr
(@int integer)
returns varchar(10)
as
begin
declare @str varchar(10)
if @int >= 0 select @str = '+' + rtrim(cast(@int as char(10)))

else select @str = rtrim(cast(@int as char(10)))
return @str
end
go
回复
yjdn 2004-09-05
select case when num>0 then char(43)+cast(num as varchar(10)) else num end from try
回复
AntingZ 2004-09-05
yesterday2000已经写了,没看清
回复
AntingZ 2004-09-05
select 字符形式=(case when [int字段]>0 then '+' else '' end)
+cast([int字段] as varchar(10) )
from 表
回复
yesterday2000 2004-09-05
直接调用自定义函数就可以了
select dbo.IntToSignStr(fire) from zs

fire
-----
-15
+12
-15
+12
回复
AntingZ 2004-09-05
else if @int < 0 select @str = '-' + rtrim(cast(@int as char(10)))
~~~~~
这个'-'是多余的
回复
yesterday2000 2004-09-05
用你的也可以啊
create function IntToSignStr
(@int integer)
returns varchar(10)
as
begin
declare @str varchar(10)
if @int > 0 select @str = '+' + rtrim(cast(@int as char(10)))

else select @str = rtrim(cast(@int as char(10)))
return @str
end
go
回复
fromv 2004-09-05
没有像C里面更简单的吗?
自己写了一个函数。

/*将整数转换为带+-符号的字符串*/
if object_id('IntToSignStr') is not null drop function IntToSignStr
go
create function IntToSignStr
(@int integer)
returns varchar(10)
as
begin
declare @str varchar(10)
if @int > 0 select @str = '+' + rtrim(cast(@int as char(10)))
else if @int < 0 select @str = '-' + rtrim(cast(@int as char(10)))
else select @str = rtrim(cast(@int as char(10)))
return @str
end
go
回复
yesterday2000 2004-09-05
fire
------
+12
-15
+12
回复
yesterday2000 2004-09-05
create table zs (fire int)

insert into zs
select 12
union
select -15
select case when fire>0 then '+'+convert (varchar (20),fire) else convert (varchar (20),fire) end from zs
回复
fromv 2004-09-05
怎么发布不了贴子?
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告