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

目录

  • 0-需求
  • 1-分析
  • 2-总结

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  |
+----------+--+

(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)

(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)

2-总结

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

你可能感兴趣的:(SQL强化进阶,sql,hive,数据仓库)