如何从4个电话字段的数据表中提取以09开头的有效数据插入其他表
提取有效手机号实现方案
针对包含mobil1、mobile2、tel1、tel2四个号码列的源表(每行固定3列存null/无效值,仅1列存有效数据),核心逻辑是逐行定位匹配以09开头的有效字符串,将提取结果写入目标表。
通用SQL实现
INSERT INTO target_table (valid_phone_column) SELECT CASE WHEN mobil1 LIKE '09%' THEN mobil1 WHEN mobile2 LIKE '09%' THEN mobile2 WHEN tel1 LIKE '09%' THEN tel1 WHEN tel2 LIKE '09%' THEN tel2 ELSE NULL END AS extracted_valid_phone FROM source_table -- 过滤整行无有效匹配值的无效记录 WHERE CASE WHEN mobil1 LIKE '09%' THEN mobil1 WHEN mobile2 LIKE '09%' THEN mobile2 WHEN tel1 LIKE '09%' THEN tel1 WHEN tel2 LIKE '09%' THEN tel2 ELSE NULL END IS NOT NULL;
落地注意事项
- 该写法完全适配“每行仅1个有效值”的表结构特征,无需执行复杂的行转列操作,查询效率更高
- 若需要排除“前缀为09但格式不规范”的无效值,可在匹配规则中追加长度校验,例如适配11位09开头手机号的判断条件可调整为
mobil1 LIKE '09%' AND LENGTH(TRIM(mobil1)) = 11 - 源表中的null值、空字符串、非09开头的占位无效值,会被
LIKE '09%'规则自动过滤,无需额外编写冗余判空逻辑
内容的提问来源于stack exchange,提问作者arash
相关产品推荐
相关产品推荐

