库:pay
表:api_user_phone (用户提交的邀请好友 "手机号" 信息)、api_user (用户注册信息)
SQL 如下:
SELECT
GROUP_CONCAT( //合并展示,并使用 replace 对手机号进行格式化
pay.api_user_phone.name,' ',
replace ( replace ( pay.api_user_phone.phone, '-', '' ), ' ', '' )) ,
api_user.id //根据 UserPhoneNum 查询 UserID
FROM
pay.api_user
LEFT JOIN
pay.api_user_phone ON pay.api_user_phone.user_id = pay.api_user.id
WHERE
pay.api_user.phone in //使用 UserPhoneNum 来查询
('187xxxxxxxx',
'135xxxxxxxx',
……
'136xxxxxxxx',
'137xxxxxxxx')
AND replace ( replace ( pay.api_user_phone.phone, '-', '' ), ' ', '' )
REGEXP "^[1][35678][0-9]{9}$"
GROUP BY
pay.api_user.id
这条 SQL 本意是格式化所有 “根据用户手机号对应的 UID ” 查出来的 “邀请手机号” 为无符号的 11 位字符串,并且过滤掉非手机号(如 12345678901 和 4008xxx 这类乱输的数据),但是当该项为 Null (用户没有输入过任何号码)时,因为不匹配正则会被整条数据过滤掉……
有什么办法保留 Null 数据吗?
1
shaohan0228 2019-01-11 10:34:25 +08:00
OR IS NULL?
|
2
CivAx OP @shaohan0228 不行
|
3
yorec 2019-01-11 11:54:05 +08:00
来个 UNION 呢?
|
4
liprais 2019-01-11 11:55:31 +08:00
case not null 筛选 null 保留 不就行了
|