Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
impala sql只选择特定长度的数字_Sql_Cloudera_Impala - Fatal编程技术网

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

impala sql只选择特定长度的数字,sql,cloudera,impala,Sql,Cloudera,Impala,我有一个用作免费txt字段的变量,数千行长 虽然它应该只包含帐号,但也包含电话号码、文本或NULL 我只需要提取带有帐号(8位字段)的列。 我如何在SQLImpala中归档这些内容,尤其是我们不仅有数字,还有文本。 我还需要知道帐号与其他帐号的百分比,以估计修复其他字段所需的时间。 如何做到这一点? 它看起来像这样: accounts --------- 12345678 23456789 test only 34567890 23443256 23443257 021735547 234432

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

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

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

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

正则表达式适用于此。尝试:

select regexp_extract(free_text_column, '^[0-9]{8}$',1) from your_table
为了得到你能做的事

select count(regexp_extract(free_text_column, '^[0-9]{8}$',1))/count(*)
from your_table

您可能需要将计数转换为浮点数,以使除法生效。

有趣。我会使用
regexp\u 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;