Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 从hiveql中逃逸美元符号_Hadoop_Hive_Hiveql - Fatal编程技术网

Hadoop 从hiveql中逃逸美元符号

Hadoop 从hiveql中逃逸美元符号,hadoop,hive,hiveql,Hadoop,Hive,Hiveql,我对蜂巢还不太熟悉,所以温柔点。。。我在Hive中有一个大表,其中一列的值中有美元符号,例如“123$AB”。我想使用此列筛选表: select * from foo where bar = "123$AB" 看起来很简单,但当我执行查询时,我得到了一个提示,要求输入:“请为此查询指定参数:AB\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu” 一些研究发现: 我猜Hive看到了美元符号,并认为我想输入一个变量或其他东西。好的,我们需要避开美元符号 我尝试了以下方法: se

我对蜂巢还不太熟悉,所以温柔点。。。我在Hive中有一个大表,其中一列的值中有美元符号,例如“123$AB”。我想使用此列筛选表:

select * from foo where bar = "123$AB"
看起来很简单,但当我执行查询时,我得到了一个提示,要求输入:“请为此查询指定参数:AB\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

一些研究发现:

我猜Hive看到了美元符号,并认为我想输入一个变量或其他东西。好的,我们需要避开美元符号

我尝试了以下方法:

select * from foo where bar = "123\$AB"
select * from foo where bar = "123\\$AB"
select * from foo where bar = '123$AB'
select * from foo where bar = '123\$AB'
select * from foo where bar = '123\\$AB'
select * from foo where substr(bar,1,3) = '123'
但我总是得到同样的提示。它只是无法将“$”识别为字符如何避开“$”?

目前,我正在做以下工作:

select * from foo where bar = "123\$AB"
select * from foo where bar = "123\\$AB"
select * from foo where bar = '123$AB'
select * from foo where bar = '123\$AB'
select * from foo where bar = '123\\$AB'
select * from foo where substr(bar,1,3) = '123'
现在还可以,但我还是想知道如何避开特殊角色。谢谢

编辑:可用的解决方法-请参阅注释


编辑2:查询编辑器左侧是“设置”选项卡,设置选项卡底部是“选项:启用参数化”。直到现在我才意识到这是什么。我应该取消选中这个,这会解决我的问题。但问题依然存在,;如果在某种情况下,我希望使用参数变量以及包含美元符号的字符串。

您可以尝试使用后波浪号(`)而不是双引号,即Esc键下方的双引号

select * from foo where bar = `123$AB`;

我想是\$\而不是$完成了这项工作

我想知道是否需要两个反斜杠。有时这会有帮助。@GordonLinoff感谢您的建议,但我尝试了一、二、三和四个前后斜杠,但仍然不起作用:(这可能不令人满意,但您可以使用正则表达式:
foorlike“^123[$]AB$”
。无法使用Hive CLI或Beeline(V1.1.0-cdh5.5.2)重现您的问题-您使用的是哪个版本?另一种解决方法可以是
=concat('123$,'AB')
,这样美元符号后面就不会跟任何字母数字字符,并且不应该被合理地误认为是要替换的参数。。。