0

純粋に数値である数値を、データベース内の同じ数値であるが記号などを含む別の値 (電話番号) と一致させようとしています。

MySQL を mainNumber 列 (シンボルなどを含む) の正規表現のみを自分の値 (数値のみ) に一致させるにはどうすればよいですか?

以下は私のコードです:

$SQL = "SELECT entities.name
        FROM entities_main_numbers
           LEFT JOIN entities ON entities.id = entities_main_numbers.entityId
        WHERE mainNumber = ?
        LIMIT 1";

例: +44 (0)800 123 123 は 440800123123 と一致します

4

4 に答える 4

0

私は MySQL の専門家ではありませんが、おそらく数値を取る関数を作成できるでしょう。たとえば、「440800123123」のような正規表現に変換します

'\D*4\D*4\D*0\D*8\D*0\D*0\D*1\D*2\D*3\D*1\D*2\D*3\D*'

( \D<=>[^0-9]これが MySQL で定義されていない場合)

これは、通常の REGEXP コマンドで使用できます...

于 2013-07-17T07:15:10.483 に答える
0

非常に醜いですが、組み込み関数を使用したいだけの場合は、チェーンを使用しREPLACEて不要な文字を除外できます。
例えば:

SELECT REPLACE(
  REPLACE(
    REPLACE(
      REPLACE(
        entities.name," ","")
      ,"+","")
    ,"(","")
  ,")","") FROM entities_main_numbers;
于 2013-07-17T07:07:59.973 に答える