Teradata CASE与CAST

时间:2018-03-23 02:03:57

标签: teradata

我有以下声明。我的期望是,如果价格低于1.00然后显示4位有效数字,否则显示2。

<div class="wrapper">
  <div class="row"></div>
</div>

给出以下结果:

Select CAST(10.99 AS DECIMAL(38,4)) C
    , CAST(10.99 AS DECIMAL(38,2)) D
    , CAST(1 AS DECIMAL(38,4)) AS LESS
    , CAST(1 AS DECIMAL(38,2)) AS GREATER
    , (CASE
         WHEN CAST(10.99 AS DECIMAL(38,4)) < CAST(1 AS DECIMAL(38,4)) THEN 
            CAST(10.99 AS DECIMAL(38,4))
         ELSE CAST(10.99 AS DECIMAL(38,2))
       END) AS PRICE_FORMATTED
FROM  MY_PRICE_TBL ;

我明确地在此示例中使用了所有内容,以显示LESS和GREATER列正在正确投放,但格式错误。我希望PRICE_FORMATTED值与Col D中的值相同

是什么给出了?

1 个答案:

答案 0 :(得分:1)

PRICE_FORMATTED 与<{1}}相同的,只是它的分数精度不同。

CAST返回单个列,此列具有数据类型。当解析器选择最佳匹配时返回不同的数据类型。当然小数(38,4)和(38,2)是不同的,然后使用具有更高小数位的小数。

您可以尝试不显示尾随零的NUMBER数据类型,但D也会显示为10.9000