我有这样的查询:
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/