我有一个包含phone
列的表格。其中的手机看起来像+1(123)456-3780。
如果用户在搜索字段“35”中输入,我应该向所有用户显示电话:
+3 (534) 000-1010
+1 (350) 000-9090
+1 (003) 534-2343
+1 (001) 223-5323 etc.
我试图做那样的事情
SELECT * FROM `mytable` WHERE `phone` LIKE '%3%5'
但这不是最佳解决方案,因为查询会获得+3(000)000-500等其他手机。
我想使用RLIKE或类似的东西,但不知道创建需要正则表达式以及它应该如何看待?
答案 0 :(得分:4)
每个输入字符之间需要[() -]*
:
SELECT * FROM `mytable`
WHERE `phone` REGEXP '3[() -]*5'
这允许在你的数字“字符串”中存在标点符号,但没有别的。
答案 1 :(得分:-1)
REGEXP '^(.{2})+(\.{4}[-].{4})$'
此模式适用于带()
示例:(00)0000-0000