使用RegExp缩短MySQL SELECT

时间:2013-10-29 13:07:00

标签: mysql regex select

在我的数据库中,我的电话号码为094-144-54 但我必须找到它们只有09414454

现在我有了这个:

0[^[:digit:]]*9[^[:digit:]]*4[^[:digit:]]*1[^[:digit:]]*4[^[:digit:]]*4[^[:digit:]]*5[^[:digit:]]*4

它有效,但有没有更短的方法来写这个?我知道\ D但我认为它不适用于MySQL RegtExp实现。

另外,如何选择这样的几行?

SELECT number FROM tb1 WHERE ((number REGEXP ' ... '), (number REGEXP ' ... '), ... );

这不起作用。

1 个答案:

答案 0 :(得分:0)

我测试了一个从0开始并以4结尾的纯数字:

SELECT number FROM tb1 WHERE (number REGEXP '^0[[:digit:]]*4$');

或纯数字数字:

SELECT number FROM tb1 WHERE (number REGEXP '^[[:digit:]]+$');

此php改写输入字符串“09414454”:

<?php
$strPhoneNo = "09414454";
$strPhoneNo = substr(chunk_split($strPhoneNo, 3, '\-'), 0, -2);
//
// => "094\-144\-54"
//
$strSQL = "SELECT number FROM tb1 WHERE (number REGEXP '^$strPhoneNo$');";
//
echo "<pre>\n";
echo $strSQL;
echo "</pre>\n";
//
// $strSQL:
// SELECT number FROM tb1 WHERE (number REGEXP '^094\-144\-54$');
//...
?>