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

解决方案 »

  1.   

    fire
    ------
    +12
    -15
    +12
      

  2.   

    没有像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
      

  3.   

    用你的也可以啊
    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
      

  4.   

    else if @int < 0  select @str =  '-' + rtrim(cast(@int as char(10)))
                                    ~~~~~
                                   这个'-'是多余的
      

  5.   

    直接调用自定义函数就可以了
    select dbo.IntToSignStr(fire) from zsfire
    -----
    -15
    +12
    -15
    +12
      

  6.   

    select 字符形式=(case when [int字段]>0 then '+' else '' end)
                    +cast([int字段] as varchar(10) )
    from 表
      

  7.   

    select case when num>0 then char(43)+cast(num as varchar(10)) else num end from try
      

  8.   

    有可能出现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