select regexp_replace("HELLO HELLO","LL",'');+----------+--+| _c0 |+_hive统计字符串中包含某">
当前位置:   article > 正文

SQL进阶--2__如何使用hiveSQL统计字符串中字符的个数_hive统计字符串中包含某个字符个数

hive统计字符串中包含某个字符个数

0-需求

统计在字符串"HELLO HELLO"中出现了多少个LL

1-分析

分析思路
(1) 用regexp_replace()函数将要计算的字符替换为’'

select regexp_replace("HELLO HELLO","LL",'')
0: jdbc:hive2://10.9.4.117:10000> select regexp_replace("HELLO HELLO","LL",'');
+----------+--+
|   _c0    |
+----------+--+
| HEO HEO  |
+----------+--+
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

(2 )用字符串的总长度减去替换字符后的串长度,得到要计算的字符总长度

select (length("HELLO HELLO")) - (length(regexp_replace("HELLO HELLO","LL",'')))
0: jdbc:hive2://10.9.4.117:10000> select (length("HELLO HELLO")) - (length(regexp_replace("HELLO HELLO","LL",'')));
+------+--+
| _c0  |
+------+--+
| 4    |
+------+--+
1 row selected (0.389 seconds)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

(3) 用步骤2的结果除以统计字符的长度,就是字符的个数

最终sql如下所示:

select (length("HELLO HELLO") - length(regexp_replace("HELLO HELLO","LL",''))) / length("LL")
0: jdbc:hive2://10.9.4.117:10000> select (length("HELLO HELLO") - length(regexp_replace("HELLO HELLO","LL",''))) / length("LL");
+------+--+
| _c0  |
+------+--+
| 2.0  |
+------+--+
1 row selected (0.328 seconds)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2-总结

本文给出了一种统计字符串中字符个数的方法,其主要技巧就是利用regexp_replace()函数将需要的统计的字符用空串(’’)代替,然后用字符串的总长度减去替代后的字符串的长度除以需要计算的字符长度,就是所需要统计的个数。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/605089
推荐阅读
相关标签
  

闽ICP备14008679号