Hive查询报错:无法识别SELECT子句中的LEFT函数
问题解决:Hive ParseException 处理
报错原因
Hive不支持LEFT()函数,同时默认不支持用||做字符串拼接,另外表名用双引号也可能引发解析问题。
修正后的查询语句
WITH missed_codes AS ( SELECT col1, concat(substr(col1, 1, 3), '.', substr(col1, 4)) AS col2 FROM `table` ) SELECT * FROM missed_codes;
关键修改点
- 用
substr(col1, 1, 3)替代left(col1, 3):Hive的substr函数语法是substr(string A, int start, int length),从1开始计数,取前3个字符正好满足需求。 - 用
concat()替代||:Hive默认不支持||作为字符串连接符,concat()可以接收多个字符串参数完成拼接。 - 表名改用反引号
`table`:Hive中如果表名是关键字或者需要特殊识别,用反引号包裹可避免解析错误(若表名不是关键字,直接写table也可行)。
验证结果
针对输入数据:
col1 A018 B672
执行修正后的语句会得到期望输出:
col1 col2 A018 A01.8 B672 B67.2
内容的提问来源于stack exchange,提问作者rshar
相关产品推荐
相关产品推荐

