运行下面的代码行:regexp_replace('Hello from zzz','zzz','$15000')
会给出一个错误消息:
错误的参数''$15000'':org.apache.hadoop.hive.ql.metadata.HiveException:无法在类org.apache.hadoop.hive.ql.udf.UDFRegExpReplace的对象org.apache.hadoop.hive.ql.udf.UDFRegExpReplace@6e85e0dd上使用参数{Hello org.apache.hadoop.io.Text,org.apache.hadoop.io.Text,大小为3的zzz:org.apache.hadoop.io.Text、$15000:org.apache.hadoop.io.Text}
$是否不受支持?对此有什么替代方案?
发布于 2018-06-07 08:42:35
尝试使用两个反斜杠(\)转义$(是一个正则表达式特殊字符)
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))
https://stackoverflow.com/questions/50731281
复制相似问题