【问题标题】:Replace single quote(') with nothing in Hive在 Hive 中用空替换单引号(')
【发布时间】:2021-05-16 09:07:57
【问题描述】:

我有一个功能可以用下面的内容替换不同类型的字符。

CAST(TRANSLATE(REGEXP_REPLACE(UPPER(number),' |,|-|/|&|_|''''',''),'.|(|)','') as string) as number

一切正常,除了 ''''' 部分,我想用任何内容替换单引号/撇号。

例子:

TYLER'SCOFFEE should come out as TYLERSCOFFEE

我查看了这个论坛的示例,似乎我们可以使用反斜杠来实现上述目的,但是当我使用下面这样的反斜杠时,它会引发错误。

select CAST(TRANSLATE(REGEXP_REPLACE('TYLER\'SCOFFEE',' |,|-|/|&|_|'\'',''),'.|(|)','') as string) as number;
Error: Error while compiling statement: FAILED: ParseException line 1:68 character '\' not supported here (state=42000,code=40000)

有人可以帮助我解决我的问题吗?谢谢。

【问题讨论】:

    标签: regex hive special-characters hiveql regexp-replace


    【解决方案1】:

    使用双引号正则表达式。双引号内,单引号被屏蔽:

    select 'TYLER\'SCOFFEE' as original_str, regexp_replace('TYLER\'SCOFFEE',"'",'') result;
    

    结果:

    original_str    result
    TYLER'SCOFFEE   TYLERSCOFFEE
    

    另外如果你需要用相同的替换来替换很多不同的字符,把它们全部放入[],不需要使用管道|

    select regexp_replace('TYLER\'SCOFFEE ,-/&_', 
                          "[ ,-/&_']", 
                          '')
    

    结果:

    TYLERSCOFFEE
    

    【讨论】:

    • 。谢谢,是的,将使用 []
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 2021-08-12
    • 1970-01-01
    • 2018-12-03
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多