如果在'。'之后选择查询问题,则打印第1个2位小数值十进制值仅为'0' - SQL

时间:2013-04-24 07:51:25

标签: sql-server sql-server-2008 select if-statement

我正在尝试打印

条件1:我的十进制值中的第一个两位数字'。'后面的十进制列。是0。

EX:If Column value is 123.00000 = 123.00

条件2:如果'。'之后有一些值,我需要打印相同的十进制列值。

EX: If Column value is 123.00200 = 123.00200
    If Column value is 123.10000 = 123.10000 

我试过以下查询。但没有得到预期的产出

SELECT
  CASE
  WHEN PARSENAME(dbo.tblS.DecColumn,1) > 1 THEN dbo.tblS.DecColumn
  ELSE cast(round(dbo.tblS.DecColumn,2) as numeric(36,2)) 
  END AS 'ColumnValue'
From
dbo.tblS

2 个答案:

答案 0 :(得分:1)

让我们假设这个数据:

create table t ( n float);
insert into t values
( 1.00100),
( 1.0 );

查询将是:

select
   case cast( n as int ) 
      when n then str(cast( n as int )) + '.00'
      else cast( n as varchar)
   end
from t;

Demo

| SOURCE |        TARGET |
--------------------------
|  1.001 |         1.001 |
|      1 |          1.00 |

答案 1 :(得分:1)

试试这个......

SELECT
      CASE
      WHEN (dbo.tblS.DecColumn-Cast(dbo.tblS.DecColumn as int))>0 THEN dbo.tblS.DecColumn
      ELSE cast(dbo.tblS.DecColumn as Decimal(36,2)
      END AS 'ColumnValue'
    From
    dbo.tblS