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

Pla*_*Pro 1 mysql select sql-like

我有这样的查询:

SELECT * FROM mytable where description like %STRING%
Run Code Online (Sandbox Code Playgroud)

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

Tim*_*sen 5

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

SELECT * FROM mytable WHERE description REGEXP '[[:<:]]Java[[:>:]]';
Run Code Online (Sandbox Code Playgroud)

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

演示版

编辑:

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

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