1

電話列を持つ 1 つのアウトソース テーブルを検索したいのですが、データベースには電話番号にスキーマがありません。したがって、電話番号は varchar であり、多くの文字が含まれています (例: " "、-、+、/)

varchar の数字だけを好きにできるのは mysql クエリですか?

Example:  
input: 30321321

Database:
+36-30/321 32-1 
70/32132131 
0630-32-13-21

私の考え:

Select * from foo where phone like "%3%0%3%2%1%3%2%1%";

これは醜く、リソースを大量に消費します。データベースには 100000 行と 2 つの電話列があります。

もっと良いアイデアはありますか?

4

1 に答える 1

-1

私はREGEXP...を使用します(今は2つの問題があると思います:))

これを試して:

SELECT * FROM foo WHERE phone REGEXP '3(.)?0(.)?3(.)?2(.)?1(.)?3(.)?2(.)?1'

注: これは phone 列で定義されたインデックスを無視するため、行数の多いテーブルに対して実行する場合は注意してください。

于 2012-11-13T01:02:47.493 に答える