mysql 如何使用CASE计算My SQL Order中的字符串出现次数

2skhul33  于 2023-11-16  发布在  Mysql
关注(0)|答案(1)|浏览(114)

我们正在使用MySQL搜索来访问文章。有一些规则如下。
搜索结果应该像这样排名:
1.所有的词都在标题中(工作)
1.所有单词在文章中多次出现(不起作用)
1.所有的话都在文章中(工作)这2可能会发挥作用,如果没有上述存在.
1.其中一个词是在标题(工作)
1.其中一个词是在文章(工作)

SELECT 
 B.page_id, 
 B.page_name, 
 B.page_description,  
FROM 
 kbs_page_tbl B
WHERE 
 A.page_id = B.page_id 
 AND (
   (
     B.page_name LIKE '%EXAMPLES%' 
     OR B.description LIKE '%EXAMPLES%' 
     OR B.tags LIKE '%EXAMPLES%'
   ) 
   AND (
     B.page_name LIKE '%OF%' 
     OR B.description LIKE '%OF%' 
     OR B.tags LIKE '%OF%'
   )
 ) 
 AND B.company_id IN(4) 
ORDER BY 
 (
   CASE WHEN B.page_name LIKE '%EXAMPLES%' 
   AND B.page_name LIKE '%OF%' 
   AND B.lifetime_views THEN 1 END
 ) DESC, 
 (
   CASE WHEN B.description LIKE '%EXAMPLES%' 
   AND B.description LIKE '%OF%' 
   AND B.lifetime_views THEN 2 END
 ) DESC, 
 (
   CASE WHEN (
     B.page_name LIKE '%EXAMPLES%' 
     AND B.description LIKE '%EXAMPLES%'
   ) 
   AND (
     B.page_name LIKE '%OF%' 
     AND B.description LIKE '%OF%'
   ) 
   AND B.lifetime_views THEN 3 END
 ) DESC, 
 (
   CASE WHEN (
     B.page_name LIKE '%EXAMPLES%' 
     OR B.description LIKE '%EXAMPLES%'
   ) 
   AND (
     B.page_name LIKE '%OF%' 
     OR B.description LIKE '%OF%'
   ) 
   AND B.lifetime_views THEN 4 END
 ) DESC

字符串
如何满足ORDER BY子句中的第二条规则(所有单词都在文章中多次出现)?

wz1wpwve

wz1wpwve1#

我不知道我是否理解正确-你想检查一个字符串是否在另一个字符串中至少出现两次?如果是的,也许你可以使用REGEXP,例如。

select if(aa REGEXP('(test).*\\1'),1,0) from .........

字符串

相关问题