Initcap的单词

时间:2018-01-24 05:28:26

标签: sql hiveql

我有一张表x,它包含此列中的resource_name列,我有像NASRI(SRI)这样的数据。 我在此列上应用了initcap,它提供了输出Nasri(sri)。但我的预期输出是Nasri(Sri)。 我如何才能达到预期的效果?

谢谢

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案是将split()concat_ws()一起使用。如果value不包含'()',那么它将正常工作。使用()进行演示:

hive> select  concat_ws('(',initcap(split('NASRI(SRI)','\\(')[0]), 
                            initcap(split('NASRI(SRI)','\\(')[1])
                       );
OK
Nasri(Sri)
Time taken: 0.974 seconds, Fetched: 1 row(s)

对于没有()的价值,它也很有效:

hive> select concat_ws('(',initcap(split('NASRI','\\(')[0]),
                           initcap(split('NASRI','\\(')[1])
                      );
OK
Nasri
Time taken: 0.697 seconds, Fetched: 1 row(s)