您现在的位置是:首页 >学无止境 >sql数据处理,使用正则匹配、去重手机号网站首页学无止境

sql数据处理,使用正则匹配、去重手机号

追逐☞ 2025-04-14 00:01:02
简介sql数据处理,使用正则匹配、去重手机号
# 去除两端口空格
trim("字段名")

正则匹配手机号

 select dh regexp '/^(((d{3,4}-)?[0-9]{7,8})|(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])d{8})$/'
--正则匹配手机号
select trim(aa.dh) rlike '(^[0-9]{3}-[0-9]{8}$)|(^[0-9]{4}-[0-9]{7,8}$)|^[0-9]{7,8}$|^[0-9]{11}$'
--获取前四个字符
substr(trim(aa.mobile),0,4)
--字符串拼接
concat(substr(trim(aa.mobile),0,4),'-',substr(trim(aa.mobile), 5)
--字符串长度判断
length(trim(aa.dh)) < 15 
--字符串替换
regexp_replace("字段名",'\#|\|\*| |\√|\.|\&|\|\+|\(|\)|','')
--查询字符串是否含字符,大于0说明包含。
locate("0513", cast(aa.dh as string)) > 0,

手机号去重,典型案例
方式一:

select 
if(regexp_replace(trim(aa.dh),'\#|\|\*| |\√|\.|\&|\|\+|\(|\)|','') rlike '(^[0-9]{3}-[0-9]{8}$)|(^[0-9]{4}-[0-9]{7,8}$)|^[0-9]{7,8}$|^[0-9]{11}$',regexp_replace(trim(aa.dh),'\#|\|\*|\√| |\.|\&|\|',''),null) as sj
end as mobile
from table_name as aa limit 10000

方式二:

select 
case 
when length(trim(aa.mobile)) < 5 then null 
when trim(aa.mobile) rlike '(^[0]{11}.*?$)|(^[1]{11}.*?$)|(^[2]{11}.*?$)|(^[3]{11}.*?$)|(^[4]{11}.*?$)|(^[5]{11}.*?$)|(^[6]{11}.*?$)|(^[7]{11}.*?$)|(^[8]{11}.*?$)|(^[9]{11}.*?$)' then null
when  trim(aa.mobile) rlike '(^[0-9]{12}$)' then concat(substr(trim(aa.mobile),0,4),'-',substr(trim(aa.mobile), 5))
else if(regexp_replace(trim(aa.mobile),'\#|\|\*| |\√|\.|\&|\|\+|\(|\)|','') rlike '(^[0-9]{3}-[0-9]{8}$)|(^[0-9]{4}-[0-9]{7,8}$)|^[0-9]{7,8}$|^[0-9]{11}$',regexp_replace(trim(aa.mobile),'\#|\|\*|\√| |\.|\&|\|',''),null) 
end as mobile
from table_name as aa limit 10000



风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。