如何替换hive中的字符串

x6492ojm  于 2021-04-09  发布在  Hive
关注(0)|答案(1)|浏览(823)

在我的hive表中有如下数据。

FirstName

Mr Tim Cannon
Guest
Miss Kerri Smith
Missra

我想使用

INITCAP(REGEXP_REPLACE('Miss Missra','(Mr.)|^Mr$|^Ms.$|^Ms$|^Mrs.$|^Mrs$|^Dr.$|^Dr$|^Miss$',' '))

但还是一样。
当尝试使用

INITCAP(REGEXP_REPLACE('Miss Missra','(\\+)|(Mr.)|^Mr$|^Ms.$|^Ms$|^Mrs.$|^Mrs$|^Dr.$|^Dr$|Miss',' '))

那就把'missra'换成了'ra'。
输出应该是:

FirstName

Tim Cannon
Guest
Kerri Smith
Missra

请给我一些解决方法。

nukf8bse

nukf8bse1#

$的意思是行尾,而在'^Miss'之后是空格,不是行尾。 '^Miss'应该可以用。点(字面的. )应该用\屏蔽,因为在regexp中点有特殊的含义--任何字符,而你的意思似乎是字面的点( . )。
^ - 意味着行首的锚,另外,第一个regex Mr/\.没有^锚,如果不是故意的,请修正它。

REGEXP_REPLACE('Miss Missra','Mr\\.|^Mr |^Ms\\. |^Ms |^Mrs\\. |^Mrs |^Dr\\. |^Dr |^Miss ',' ')

相关问题