如何使 mysql LIKE 只搜索单个单词

How to make mysql LIKE search for exactly single words only

我有这样的查询:

SELECT * FROM mytable where description like %STRING%

问题是:当我搜索 JAVA 时,它 returns 我什至 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();