【问题标题】:Select Query issue for print 1st 2 decimal value if after '.' decimal value is only '0' - SQL如果在 '.' 之后,请选择查询问题以打印第 1 个 2 十进制值十进制值只有 '0' - SQL
【发布时间】:2013-04-24 07:51:25
【问题描述】:

我正在尝试打印

条件 1: '.' 之后的十进制值 IF 十进制列中的第一个两位数为 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

【问题讨论】:

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


    【解决方案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 |
    

    【讨论】:

    • Gr8 工作.. 这是我所期望的 :)
    【解决方案2】:

    试试这个...

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多