在mysql中,如何选择字段的数字部分?

时间:2014-10-17 16:49:43

标签: php mysql

我有一张包含自由格式电话号码的表格(例如' 123-456-7890','(987)654-3210'或者' 123.456.7890& #39;)我正在用数字字符串搜索它们 - 例如,' 123456'。

现在,我必须做一堆替换(替换(替换(...广告恶意功能以去除错误的非数字字符然后使用' LIKE'搜索值搜索。

任何人都知道一种更简单的方法,只根据类型选择字段中的某些字符,而不是位置?

3 个答案:

答案 0 :(得分:3)

您可以在MySQL中使用正则表达式 -

SELECT * 
FROM `table` 
WHERE `phone` REGEXP '^[12345]'

这是一个有效的example

答案 1 :(得分:0)

尝试使用正则表达式。如果你想从字符串中提取数字,你可以使用它:

$string = '123-456-7890';
preg_match_all('/\d+/', $string, $matches);
echo $matches;    //will result in only digits

答案 2 :(得分:0)

尝试将数字分成三个不同的值,即

$first = '124';
$second= '456';
$third = '7890';

"WHERE (phone_number LIKE '%$first%' and LIKE '%$second%' and LIKE '%$third%')"

我不确定这是否与SQL的REGEXP一样有效,但它应该可以正常工作,因为每个部分都被分割出来。如果数字在db:1245667890中是这样的,则可能无效,因为您可以找到1244567890,但数字不匹配。这个答案假定永远不会有一个实数。