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]+),直到字符串的末尾$

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

这将匹配任何不以可选开头+,后跟仅数字的内容。如果您还需要在电话号码中允许使用连字符和点,请将它们添加到[]字符类中:

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