库: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 数据吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.