2

如果该 SQL 没有返回任何内容,我想搜索一个单词+数字,我会将其默认为完整LIKE搜索,有没有办法在 SQL 中实现这样的正则表达式?

例子:

$queryWord = potato
  • 它应该首先搜索potato+somenumber,最多4位
  • 它应该返回所有匹配的土豆+somenumber
  • 如果失败,则默认为两边都带有通配符的完整搜索

像这样:

$sql = "SELECT * FROM `words` WHERE `searchWord` LIKE '$queryWord+number';";
$result = mysqli_query($con, $sql);

if (mysqli_num_rows($result) == 0) {

    $sql =  "SELECT * FROM `words` WHERE `searchWord` LIKE '%$queryWord%';"; // full search
    $result = mysqli_query($con, $sql);
    // etc etc

}
4

1 回答 1

3

只需将您的查询更改为:

$sql = "SELECT * FROM `words` WHERE `searchWord` REGEXP '$queryWord(\d{1,4})';";

这是一个证明 Regex 的 Rubular

于 2013-05-16T19:45:52.440 回答