0

在我的数据库中,我有像 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 ' ... '), ... );

这行不通。

4

1 回答 1

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$');
//...
?>
于 2013-10-29T13:19:17.563 回答