sql - Oracle到Impala查询转换

标签 sql oracle hadoop impala

我们正在从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
我在业务对象Universe设计工具中使用此查询,它给我错误

SUBSTR(table1.ACC_NBR,5,1) or ||'-'|| is a Boolean expected string



。有人可以看一下查询,看看有什么遗漏或多余的内容。

提前致谢。

最佳答案

在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

关于sql - Oracle到Impala查询转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47603764/

相关文章:

sql - 针对附加数据库运行 sql 脚本?

database - 如何检查Oracle实例是使用pfile还是spfile启动的?

java - 从时间戳获取日期的这两个代码有什么区别?

Hadoop 流 : single file or multi file per map. 不要拆分

sql - 计算直到某个日期的唯一组合 - 每月

sql - 创建存储过程时列名无效错误

java - JDev 代码编辑器的自定义

java - JDBC 返回空结果集

hadoop - Hadoop集群的动态IP

sql - 在 N+M 个数字组中找到一组 N 个相似数字