关于MySQL的美好之处,取决于您的观点。它以认为您希望对其进行处理的方式对待数据。
1 +'1'?很明显,您想将字符串当作数字对待,因此它很高兴为您执行加法。
也适用于布尔 *** 作数(只需要注意运算符的优先级)。
(a like '%foo%') + (a like'%bar%')识别数字上下文,将布尔结果
true视为
1和布尔结果
false视为
0-本质上是为您计算关键字匹配项。
你怎么用呢?把你的
where条款,替换所有
or带
+,并确保每个单独
like的语句被包裹在括号,然后
order by它。
例如:
order by (concat(title, description) like '%keyword1%') + (concat(title, description) like '%keyword2%') desc
您可以使用来完成类似的 *** 作
fulltext index,但是权重可能有些奇怪。语法如下:
create fulltext index idx on search_table(title, description)
^^只需做一次。
select * from search_table where match(title, description) against ('keyword1 keyword2 ...') order by match(title, description) against ('keyword1 keyword2 ...') desc
这具有极大的好处,那就是构造查询的烦恼要少得多。
这是为您演示两种方法的概念证明。(尽管仅针对单个列-
但却能说明要点)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)