如何筛选Customer表Phone_num列中第5-7位为5、6、7的10位手机号
解决方法:查询符合特定格式的10位手机号
要筛选出Customer表中符合要求的手机号,你可以用两种常见的SQL写法实现:
方法1:使用LIKE匹配模式
这种方法通过通配符直接匹配手机号格式,简单直观:
SELECT Phone_num FROM Customer WHERE LEN(Phone_num) = 10 AND Phone_num LIKE '____567___';
LEN(Phone_num) = 10:确保手机号是严格的10位长度____567___:下划线_代表任意单个字符,前4个下划线匹配前4位任意数字,567固定匹配第5-7位,后3个下划线匹配最后3位任意数字
方法2:使用SUBSTRING截取字符段
这种方法通过截取指定位置的字符进行判断,灵活性更强:
-- 适配多数数据库(注意:不同数据库的字符串截取函数参数略有差异) SELECT Phone_num FROM Customer WHERE LENGTH(Phone_num) = 10 AND SUBSTRING(Phone_num, 5, 3) = '567';
SUBSTRING(Phone_num, 5, 3):从手机号第5位开始截取3个字符,判断是否等于567- 注意:SQL Server用
LEN(),MySQL和Oracle用LENGTH();MySQL的截取函数也可写为SUBSTR(Phone_num, 5, 3)
额外注意事项
如果Phone_num列存储的是数值类型(如INT/BIGINT),需先转换为字符串类型再判断,否则无法使用LIKE或截取函数:
-- SQL Server示例 SELECT CAST(Phone_num AS VARCHAR(10)) AS Phone_num FROM Customer WHERE LEN(CAST(Phone_num AS VARCHAR(10))) = 10 AND SUBSTRING(CAST(Phone_num AS VARCHAR(10)), 5, 3) = '567';
内容的提问来源于stack exchange,提问作者Vũ Hắc
相关产品推荐
相关产品推荐

