我的蜂巢中有一个 twitter 对象表(json 格式(、n 行和 1 列。任务是计算一些单词如"hon"、"han"在不同对象中的出现频率(每个对象都有一个叫做"text"的属性,其中包括一些texts(字符串类型((,这意味着即使一个单词在一个对象中出现不止一次,但它只计算一个。我写了一个如下所示的查询。
select count(*) from table_name
where regexp(get_json_object(col_name, '$.text'), 'han')
limit 10
并收到类似
失败:ParseException 行 2:6 无法识别表达式规范中"正则表达式"("get_json_object"附近的输入
如何执行此查询任务?而且我不知道如何在正则表达式中忽略大小写。
使用(?i)
修饰符进行不区分大小写的比较:
select
sum(case when text rlike '(?i)han' then 1 else 0 end) cnt_han,
sum(case when text rlike '(?i)hon' then 1 else 0 end) cnt_hon
from
(
select get_json_object(col_name, '$.text') as text
from table_name
)s;