正则匹配
使用regexp进行正则匹配
准备数据
drop table if exists test.test_zw;
CREATE TABLE if not exists test.test_zw(
stu_id int COMMENT '学生id',
mobile string comment '手机号'
)
COMMENT '测试表'
STORED as parquet TBLPROPERTIES('parquet.compression'='SNAPPY');
insert into test.test_zw values
(1,15966668888),
(2,1598888);
查询mobile不是11为数字的数据
select *
from test.test_zw
where mobile not regexp '\\d{11}'
正则替换
逗号替换为下划线
select regexp_replace('a,b,c',',','_') -- 返回 'a_b_c'
将c替换为空字符串,相当于删除c
select regexp_replace('a,b,c','c','') -- 返回 a,b,
删除b或者c
select regexp_replace('a,b,c','b|c','') -- 返回 a,,
正则截取
提取链接中的sku_id,返回sku_id=1234567,表示一个或者多个数字
select regexp_extract('https://detail.tmall.com/item.htm?sku_id=1234567','sku_id=(\\d+)',0)
-- \\d+表示一个或者多个数字。