web-dev-qa-db-ja.com

where句のmySQL正規表現

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

どのように任意の数値形式と任意の数値のように有効にするのですか

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

現時点では1-999-999-9999にのみ有効です

27
Matt Elhotiby

使用する:

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

参照:

36
OMG Ponies

電話番号をスペース、ダッシュ、括弧などを使用してデータベースに保存するのは賢明ではありません。最も効率的な方法は、すべてのゴミを単純な10桁の数字に切り捨てることです。そうすれば、VARCHARではなくINTEGERベースの列に実際に数値を格納できます。

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