【问题标题】:Oracle to Impala Query ConversionOracle 到 Impala 查询转换
【发布时间】:2017-12-02 01:46:58
【问题描述】:

我们正在从 Oracle 迁移到 Hadoop,我正在尝试将以下用 Oracle sql 编写的查询转换为 Impala sql:

CASE WHEN UPPER(table1.ACC_NBR) = LOWER(table1.ACC_NBR) THEN SUBSTR(table1.ACC_NBR,5,1)||'-'||SUBSTR(table1.ACC_NBR,8,2)||'-'|| SUBSTR(table1.ACC_NBR,10,3)||'-'||SUBSTR(table1.ACC_NBR,13,6) ELSE SUBSTR(table1.ACC_NBR,5,1)||'-'||SUBSTR(table1.ACC_NBR,6,2)||'-' || SUBSTR(table1.ACC_NBR,10,2)||'-'||SUBSTR(table1.ACC_NBR,13,6) END

我在业务对象宇宙设计工具中使用此查询,它给了我错误

SUBSTR(table1.ACC_NBR,5,1) 或 ||'-'||是一个布尔预期字符串

。有人可以看看查询,看看有什么遗漏或多余的吗?

提前致谢。

【问题讨论】:

    标签: sql oracle hadoop impala


    【解决方案1】:

    || 在 impala 中未被识别为连接运算符。请改用CONCAT 函数。

    CASE
       WHEN
          UPPER(table1.ACC_NBR) = LOWER(table1.ACC_NBR) 
       THEN
          CONCAT ( SUBSTR(table1.ACC_NBR, 5, 1), '-', SUBSTR(table1.ACC_NBR, 8, 2), '-',
                   SUBSTR(table1.ACC_NBR, 10, 3), '-', SUBSTR(table1.ACC_NBR, 13, 6) ) 
       ELSE
          CONCAT ( SUBSTR(table1.ACC_NBR, 5, 1), '-', SUBSTR(table1.ACC_NBR, 6, 2), '-' , 
                   SUBSTR(table1.ACC_NBR, 10, 2), '-', SUBSTR(table1.ACC_NBR, 13, 6) ) 
    END
    

    【讨论】:

      猜你喜欢
      • 2021-01-31
      • 2021-05-03
      • 2016-04-10
      • 1970-01-01
      • 1970-01-01
      • 2018-03-28
      • 2014-03-31
      • 2018-02-28
      相关资源
      最近更新 更多