hadoop - 从 hiveql 中转义美元符号

标签 hadoop hive hiveql

我对 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/

相关文章:

hadoop - hive 创建表重复列名错误

sql - 在同一字段上的表上进行双重连接

hadoop - Hadoop 是适合这个的技术吗?

Hadoop webhdfs curl 创建文件

amazon-web-services - AWS Athena MSCK REPAIR TABLE对于小型数据集而言花费的时间太长

mysql - 如何将两个表的数据并排加载到单个表中

sql - 比较 HIVE 中的两个表的相等性

hadoop - 如何从 HIVE 中的日期中减去月份

hadoop - Hive cdh4 节俭设置抛出 NoSuchFieldError : METASTORE THRIFT RETRIES

configuration - 如何让hadoop程序使用包含参数列表的配置文件?