【问题标题】:How do I use a regex in my MySQL query?如何在我的 MySQL 查询中使用正则表达式?
【发布时间】:2013-05-16 19:41:24
【问题描述】:

如果该 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

}

【问题讨论】:

    标签: php mysql regex


    【解决方案1】:

    只需将您的查询更改为:

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

    这里是Rubular that proves the Regex

    【讨论】:

    • 只是说,在MySQL中有2个关键字可以用于正则表达式匹配:REGEXPRLIKE,它们是一样的。
    猜你喜欢
    • 1970-01-01
    • 2013-09-06
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 2011-07-01
    • 1970-01-01
    相关资源
    最近更新 更多