20.在一张contacts表中,存储了用户的联系信息。请查询出所有符合以下条件的电话号码,并按id升序输出所有字段:
- 电话号码必须是 10 位数字。
- 电话号码的第一位不能以 0 开头。
- 电话号码的格式可以是连续的 10 位数字,或以-分隔的格式(如123-456-7890)
表contacts
| id | name | phone_number |
|---|---|---|
| 1 | Alice | 1234567890 |
| 2 | Bob | 0123456789 |
| 3 | Charlie | 123-456-7890 |
| 4 | David | 123-4567-890 |
| 5 | Eve | 9876543210 |
输出
| id | name | phone_number |
|---|---|---|
| 1 | Alice | 1234567890 |
| 3 | Charlie | 123-456-7890 |
| 5 | Eve | 9876543210 |
sql
SELECT id,name,phone_number
FROM contacts
WHERE phone_number regexp '^([1-9][0-9]{9}|[1-9][0-9]{2}-[0-9]{3}-[0-9]{4})$'
ORDER By id
--^:匹配字符串开头
--$:匹配字符串结尾
--|:表示或,匹配两种格式中的任意一种
--连续10位数字的格式:[1-9][0-9]{9}
-- -:分隔符
--前3位(第一位非0):[1-9][0-9]{2}
--中间3位:[0-9]{3}
--最后4位:[0-9]{4}