select id,name,phone_number
from contacts c
where  (c.phone_number  like '___-___-____'
 or length(c.phone_number)=10
 )
and (c.phone_number  like '1%'
or c.phone_number  like '2%'
or c.phone_number  like '3%'
or c.phone_number  like '4%'
or c.phone_number  like '5%'
or c.phone_number  like '6%'
or c.phone_number  like '7%'
or c.phone_number  like '8%'
or c.phone_number  like '9%'
)
order by id

也许你没有学过正则表达式,但是一定学过 name like '%dd_'这个简单的通配符,

%代表任意数量的字符

_代表一个字符

length函数获取长度

(正式代码还是推荐正则表达式的,如果在写题的时候可以强出解,反正sql没有时间复杂度要求)