php - 如何在 MySQL 查询中使用正则表达式?

标签 php mysql regex

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

示例:

$queryWord = potato
  • 它应该首先搜索potato+somenumber 最多 4 位
  • 它应该返回所有与potato+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

}

最佳答案

只需将您的查询更改为:

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

这是一个 Rubular that proves the Regex .

关于php - 如何在 MySQL 查询中使用正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16596055/

相关文章:

php - 如何提高 MySQL 的性能

mysql - 按主机分组的每日最大玩家数

php - 我需要一些帮助来创建查询和数据库表以追溯地将数字分配给现有表

python - .lower() 和正则表达式在同一行?

python - 如何将字符串的各个部分提取为单独的字符串

javascript - php中有替换功能吗?就像 JavaScript 的 Replace()

php - SHOW TABLES 未返回数组中的正确项目

php - 将 HTML 文本转换为 Leet (1337) Speak with XPath

php - 在mysql中加入查询时如何更改列名

用于匹配单词的 Ruby 正则表达式,包括重音符号和其他 UTF8 字符