字符串连接运算符(||)在配置单元中抛出错误

Posted

技术标签:

【中文标题】字符串连接运算符(||)在配置单元中抛出错误【英文标题】:string concat operator(||) throwing error in hive 【发布时间】:2021-03-11 00:01:46 【问题描述】:

我正在尝试使用 concat 运算符 || 连接表中的字符串列并抛出错误。

Here is the query: select "Bob"||'~'||"glad" from table

its throwing error as : ParseException - cannpt recognize input near '|' '"~"' '|' in expression specification

它适用于 concat 函数,但不适用于 concat 运算符。

select concat("bob","~","glad") from table - its working

我使用的是 hive 2.1 版,谁能告诉我为什么这个运算符不起作用?

谢谢,巴布

【问题讨论】:

【参考方案1】:

Hive 不支持 concat 运算符 ||,它的 oracle 语法。请使用concat 函数连接多个值。您可以使用 concat_ws 与分隔符连接。 连接

select concat ('this','~','is','~','hello','~','world');
Output : this~is~hello~world
select concat_ws ('~','hello','world','is','not','enough');
Output : hello~world~is~not~enough

【讨论】:

您好 Koushik,感谢您的快速回复。我正在使用 ||在 hive 3.x 及其工作中。我正在将我的代码移动到 hive 2.x 版本并面临这个问题。我通过 shell 脚本传递这个 sql 语句来执行,你认为它是 shell 脚本的问题吗? 嗯,很有趣。可能的,你能看看它生成的最终 SQL 是什么吗?然后在 hive 2.x 中触发 SQL。如果 SQL 工作,那么 shell 有问题。如果 SQL 不起作用,那么看看问题出在哪里 - 是 shell 还是 sql。 是的,我尝试过连接运算符 || 的 SQL 看起来有问题。所有的文件都说我们可以使用||用于连接,但在使用时抛出错误。不确定是什么问题。当我将其更改为 concat_ws 时,它工作正常。 您的蜂巢的确切版本是什么?我在 2.1.1 及其工作上进行了测试。 是蜂巢 1.2.1000.2.6.1.40-4

以上是关于字符串连接运算符(||)在配置单元中抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

对象扩展运算符在 Microsoft Edge 中抛出错误

护照 mongoStore 在摩卡测试中抛出连接错误

"print" 在 Python 3 中抛出无效的语法错误

Jasmine:期望在异步函数中抛出错误

在 main 中抛出异常而没有任何错误

java中抛出异常以及日志