我对 Hive 比较陌生,所以要温柔...我在 Hive 中有一张大 table ,其中一列的值中有美元符号,例如“123$AB”。我想使用此列过滤表:
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:查询编辑器左侧是“设置”选项卡,设置选项卡底部是“ 选项:启用参数化”。直到现在我才意识到这是什么。我应该有未选中 这个,这将解决我的问题。但是,问题仍然存在;如果我想使用参数变量以及包含美元符号的字符串。
最佳答案
您可以尝试使用反波浪号 (`) 而不是双引号,即 Esc 键下方的双引号。
select * from foo where bar = `123$AB`;
关于hadoop - 从 hiveql 中转义美元符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36025734/