我们正在从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/