mysql - 如何使mysql LIKE仅搜索单个单词

标签 mysql select sql-like

我有这样的查询:

SELECT * FROM mytable where description like %STRING%

问题是:当我搜索 JAVA 时,它甚至返回带有 JAVAscript 的记录。
但是,JAVA != JavaScript,对吧?我该如何解决?

最佳答案

MySQL 的 LIKE 运算符并不真正适合检测字符串中的单个单词。但是支持正则表达式的 REGEXP 可以处理这个问题。考虑以下查询:

SELECT * FROM mytable WHERE description REGEXP '[[:<:]]Java[[:>:]]';

这对应于匹配模式 \bJava\b,即单词 Java 本身。

Demo

编辑:

如果您尝试使用 Laravel 执行此查询,那么 whereRaw 应该会派上用场:

$results = DB::table('mytable')
            ->whereRaw('description REGEXP ?', ['[[:<:]]Java[[:>:]]'])
            ->get();

关于mysql - 如何使mysql LIKE仅搜索单个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47320244/

相关文章:

php - Cookie 没有显示出值(value)

javascript - onChange 不适用于 selectedIndex

sql - 需要在 UPPER SQL 语句中使用 INNER JOIN SELECT

MySQL 通配符与 concat 匹配

php - 在 Regexp 和 MySQL LIKE 之间转换

php - SQL:根据related_id和related_table进行选择。 ID 存储在以表命名的数组中

mysql - phpMyAdmin 错误 1932 - 表在引擎中不存在

where - Sequelize : $like though multiple included models

mysql - 库存的订单触发(更新)

sql - 长时间运行的查询 : observing partial results?