1

電話番号を含む列を含むmysqlテーブルがあります。実際には電話番号ではないものもあります。これは、「電話番号を構成するすべての電話番号をNULLに設定する」などの単一のクエリを実行して調べたいものです。 0〜9および「+」以外の文字の

これまでのところ、私は次のことを考え出しましたが、「+」の許容誤差を追加する方法がわかりません。

$query="UPDATE table SET phone='NULL' WHERE phone REGEXP ('[0-9]')!=1";
mysql_query($query);

そのクエリで「+」を許容する方法を知っている人はいますか?また、「+」は電話番号の先頭にある必要があります。

ありがとうございました!

チャールズ

4

1 に答える 1

1

まず、NOT REGEXPの代わりに使用し!=1ます。+オプションで開始時に許可するには、 を使用します^\\+?。は正規表現の特殊文字であるため+、バックスラッシュでエスケープする必要があります (別のバックスラッシュでエスケープする必要があります)。[0-9]+次に、文字列の最後まで1 つ以上の数字 ( ) が必要です$

$query="UPDATE table SET phone='NULL' WHERE phone NOT REGEXP '^\+?[0-9]+$'";

これは、オプションで で始まり+、その後に数字のみが続くものと一致します。電話番号でハイフンとドットも許可する必要がある場合は、それらを[]文字クラスに追加します。

'^\\+?[0-9.-]+$'
于 2012-07-14T11:46:03.733 に答える