在Teradata中使用大小写

时间:2018-10-26 23:42:55

标签: sql database teradata

简单的问题,但让我发疯了一段时间。在Teradata中具有下表:

A       B
112211  
113311  56
226144  61
996688  66
005400  
771277 

对于col-B中的空白字段,需要从col-A中提取数字,例如:

SELECT A
CASE 'B'
WHEN 'B' IS NULL THEN SUBSTR('A',3,4)
END AS 'B'
FROM TABLE_T1;

查阅了一些文档,但没有发现上面的查询出了什么问题。该查询将在MySQL上运行,但为什么不能在Teradata中运行。

预期的O / P:

A       B
112211  22
113311  56
226144  61
996688  66
005400  54
771277  12

1 个答案:

答案 0 :(得分:2)

您可以使用case expression的这种形式,注意区别是case when ...而不是case b when ...。也仅对文字使用单引号,对身份使用双引号。 (请注意,为什么要使用单引号。)

SELECT
      A
    , CASE WHEN B IS NULL THEN SUBSTR(A,3,4) 
           ELSE B 
      END AS "B"
FROM TABLE_T1;

但是我相信您也可以使用coalesce()

SELECT
      A
    , coalesce(B ,SUBSTR(A,3,4) AS "B"
FROM TABLE_T1;