从hiveql转义美元符号

时间:2016-03-16 02:21:48

标签: hadoop hive hiveql

我对Hive很新,所以要温柔......我在Hive中有一张大桌子,其中一列有美元符号,例如" 123 $ AB&#34 ;.我想使用此列过滤表格:

select * from foo where bar = "123$AB"

看似简单,但当我执行查询时,我得到一个提示,要求输入:" 请指定此查询的参数:AB ________ "

有点研究发现: How to set variables in HIVE scripts

我猜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'

现在可以正常工作,但我仍然想知道如何转义特殊字符。谢谢!

编辑:可用的解决方法 - 请参阅评论!

编辑2:查询编辑器左侧是"设置"选项卡,并在设置选项卡的底部是" 选项:启用参数化"。直到现在我还没有意识到这是什么。我应该取消选中这可以解决我的问题。但问题仍然存在;如果我想使用参数变量的情况,以及包含美元符号的字符串。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用后面的代字号(`)而不是双引号,即Esc键下面的那个。

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

答案 1 :(得分:0)

我猜\ $ \而不是$完成工作

相关问题