对多个替换条件使用replace或regexp\u replace函数

u59ebvdq  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(691)

我正在使用配置单元并尝试清理可能包含多个不需要的数据的数据。想知道我是否可以使用一个单一的regexp\u替换或翻译多个条件的函数。
例如,如果字符串是 2000 Helen St - DO NOT USE 我需要更换/修整 - DO NOT USE 也会改变 StStreet . 输出应该是 2000 Helen Street .
同样地 3000 Cross St 应该是 3000 Cross Street , 4000 Mascot Dr 应该是 4000 Mascot Drive 等。。
大约有10个或更多这样的清理条件,输入字符串可以满足0个或多个条件。这些条件能在一个单独的时间内设置吗 regexp_replace ?

w7t8yxp5

w7t8yxp51#

您可以使用or(|)轻松组合模板以删除子字符串或替换为相同的值。在其他情况下,使用多个regexp\u替换:
例如,如果要删除“test”和“-do not use”,并用“street”替换“dr”:

hive> select regexp_replace(
                  regexp_replace('TEST 2000 Helen St - DO NOT USE',
                                 '[- ]*DO NOT USE|TEST( *|$)',''),
                          'St([ ]*|$)','Street'  
                  );
OK
2000 Helen Street
Time taken: 0.055 seconds, Fetched: 1 row(s)

它删除了“test”和“-don't use”这两个组合到一个模板中st替换为street,这是第二个regexp\u替换。当然这只是个例子。

相关问题