web-dev-qa-db-fra.com

mySQL regex dans la clause where

SELECT telephone_number
FROM table
WHERE telephone_number REGEXP '^1[() -]*999[() -]*999[() -]*9999$';

comment puis-je le rendre valide pour tous les formats de nombres et tous les nombres. 

407-888-0909
1(408)998-7654
7776654433
876-7788

pour le moment sa seulement valable pour 1-999-999-9999

21
Matt Elhotiby

Utilisation:

SELECT telephone_number
  FROM table
 WHERE telephone_number REGEXP '^1[() -]*[[:digit:]]{3}[() -]*[[:digit:]]{3}[() -]*[[:digit:]]{4}$';

Référence:

32
OMG Ponies

Il n’est pas très sage de stocker les numéros de téléphone dans une base de données avec des espaces, des tirets, des parenthèses, etc. De cette façon, vous pouvez réellement stocker le nombre dans une colonne basée sur INTEGER au lieu d'un VARCHAR.

1
dockeryZ
SELECT telephone_number
  FROM table
 WHERE telephone_number REGEXP '[1]?[(]?[[:DIGIT:]]{3}[)]?[-]?[[:DIGIT:]]{3}[-]?[[:DIGIT:]]{4}'
0
jacob YO