【问题标题】:How to Split a column value which has $$ in hive如何拆分配置单元中具有 $$ 的列值
【发布时间】:2018-06-08 17:50:38
【问题描述】:

这可能是一个愚蠢的问题,但我是 hive 的新手并且尝试了一些事情。

问题是,我在表中有一个列,其中包含 $$ 的值,例如 ABC12$$FRG3 ,我将它导出到不同的配置单元表,所以在给定的情况下,我只需要像 ABC12 这样的值的第一部分,我尝试了以下方法

Select regexp_extract(id,'^(\\w.*)\\$${2}(\\w.*)$',1) as app from tempTable;

我也在 hive 中尝试过拆分功能

select split(collection_id,'\\$$') as app from tempTable;

两者都不工作,它给出完整的字符串(原始)没有拆分我错过了什么吗?

【问题讨论】:

  • “不工作”到底是什么意思?语法错误?运行时错误?出乎意料的结果(它们的外观和您的预期)?
  • 一个意想不到的结果它像 ABC12$$FRG3 但我需要它像 ABC12 分裂后

标签: sql hive hiveql


【解决方案1】:

我猜这是因为您在正则表达式中将$ 符号加倍了。 你应该试试

Select regexp_extract(id,'^(\\w.*)\\${2}(\\w.*)$',1) as app from tempTable;

【讨论】:

  • 是的,它起作用了 $$ 是罪魁祸首,谢谢你的回答
【解决方案2】:

问题在于表达式 '^(\w.)\$${2}(\w.)$' 中的 $$ 从表达式中删除一个 $ 符号。以下将解决问题。

Select regexp_extract(id,'^(\\w.*)\\${2}(\\w.*)$',1) as app from tempTable;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-04
    • 2017-07-02
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多