运行此行:
regexp_replace('Hello from zzz','zzz','$15000')
错误地说:
错误的参数''$ 15000'':org.apache.hadoop.hive.ql.metadata.HiveException:无法执行方法public org.apache.hadoop.io.Text org.apache.hadoop.hive.ql.udf对象org.apache.hadoop.hive.ql.udf.UDFRegExpReplace上的.UDFRegExpReplace.evaluate(org.apache.hadoop.io.Text,org.apache.hadoop.io.Text,org.apache.hadoop.io.Text)带有参数的Hello org.apache.hadoop.hive.ql.udf.UDFRegExpReplace的@ 6e85e0dd {来自zzz的Hello:org.apache.hadoop.io.Text,zzz:org.apache.hadoop.io.Text,$ 15000:org。大小为3的apache.hadoop.io.Text}
不支持$?有什么替代方案?
答案 0 :(得分:0)
尝试使用两个反斜杠(\\)来转义$(是一个正则表达式特殊字符)
hive> select regexp_replace('Hello from zzz','zzz','\\$15000');
+--------------------+--+
| _c0 |
+--------------------+--+
| Hello from $15000 |
+--------------------+--+
Hive-1.3.0 +中引入了替换功能 相关jira寻址替换功能
如果替换字符串来自表中的字段,则使用 concat函数将字段值与反斜杠(\\)连接起来另一个参数是字段名称
hive> select regexp_replace('Hello from zzz','zzz',concat('\\',"$15000"));
+--------------------+--+
| _c0 |
+--------------------+--+
| Hello from $15000 |
+--------------------+--+
<强>(或)强>
hive> select regexp_replace('Hello from zzz','zzz',concat('\\',field/column-name))