sql - impala sql 只选择特定长度的数字

标签 sql cloudera impala

我有一个用作免费 txt 字段的变量,有数千行长。

虽然它应该只包含帐号,但它也包含电话号码、文本或 NULL。

我只需要提取包含帐号(8 位数字字段)的列。 我如何在 SQL impala 中存档它,尤其是因为我们不仅有数字,还有文本。 我还需要知道帐号与其他帐号的百分比,以估计修复其他字段所需的时间。 如何才能做到这一点? 它看起来像这样:

accounts
---------
12345678
23456789
test only
34567890
23443256
23443257
021735547
23443258
23443259
23443260
call back
23443261
53443262
23443263
23443264
23443265
cancel
53443262
53443263
63443264
53443265
73443266
53443267

最佳答案

很有趣。我会使用 regexp_like():

select sum(case when regexp_like(col, '^[0-9]{8}$') then 1 else 0 end) as cnt,
       avg(case when regexp_like(col, '^[0-9]{8}$') then 1.0 else 0 end) as ratio
from t;

关于sql - impala sql 只选择特定长度的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50091772/

相关文章:

hadoop - Impala 找不到 com.mysql.jdbc.Driver

hadoop - 在java代码中找到hive-site.xml的位置

hadoop - 使用Cloudera 5.9的Polybase

php - 选择月日年作为mysql中的日期?

mysql - MYSQL 中的 "Error Code: 1109. Unknown table ' 排行榜 ' in field list"

installation - cloudera 主机在安装过程中运行状况不佳

hadoop - ETL informatica 大数据版(非云版)能否连接Cloudera Impala?

hadoop - 如何在Impala中查询数组元素?

mysql - SQL : Error Syntax #1064

php - 使用sql查询从多个表中搜索数据