myaql 使用正则表达式写手机号验证,要求以手机号152,153,159,177,199开头,满足11位
时间: 2023-12-13 12:24:05 浏览: 24
可以使用MySQL中的REGEXP函数进行正则表达式匹配,具体可以按照以下方式实现:
```sql
SELECT * FROM table_name WHERE phone_number REGEXP '^(152|153|159|177|199)\\d{8}$';
```
其中,`table_name`是你的表名,`phone_number`是你存储手机号的列名。正则表达式中,`^`表示匹配字符串的开始,`(152|153|159|177|199)`表示以这几个号码段开头,`\\d{8}`表示匹配8位数字,`$`表示匹配字符串的结束。
这条SQL语句会查找满足以以上号码段开头,且手机号码长度为11位的记录。
相关问题
mysql正则匹配手机号
可以使用MySQL的正则表达式函数REGEXP来匹配手机号码,如下示例:
```sql
SELECT * FROM `table_name` WHERE `phone_number` REGEXP '^1[3-9]\\d{9}$';
```
解释:
* `^1[3-9]` 表示手机号码的前两位必须是1和3到9中的任意一个数字;
* `\\d{9}` 表示接下来的9位必须是数字;
* `$` 表示字符串的结尾。
因此,这个正则表达式可以匹配以1开头的11位数字串,即符合手机号码格式的字符串。
mysql中筛选出手机号码为11位,且为1开头是正常电话号码
可以使用MySQL中的正则表达式函数`REGEXP`来实现筛选出手机号码为11位,且为1开头的电话号码。
例如,假设我们有一个名为`phone_numbers`的表,其中有一个名为`phone`的列存储了电话号码。则可以使用以下SQL语句来实现筛选:
```
SELECT phone FROM phone_numbers WHERE phone REGEXP '^1[0-9]{10}$';
```
其中,`^1`表示以1开头;`[0-9]{10}`表示后面跟着10个数字;`$`表示结束。因此,这个正则表达式用来匹配11位的以1开头的电话号码。