SQL search至少匹配array中一半以上的关键字的查询


SQL search Query for matching at least half of the keywords of array

我有一个表模式

Id, Name, Email, Description.

Description列每行都有很多文本。现在我要根据用户输入的单词在该列中执行搜索。假设用户输入了五个搜索词。

  1. 自然

现在我想执行一个搜索,如果描述列的任何一行匹配中的任何一行,至少匹配上述五个中的三个,它应该在结果集中给出该行。我不希望所有的单词都匹配或者单个匹配。我希望在Description列的每行中至少匹配三个单词。我知道LIKE语句,但是我怎样才能使它达到我想要的结果呢?忽略大小写敏感性。我怎么才能做到呢?谁能帮我做SQL查询我的问题?

Olvathar的想法是正确的,但它只会显示匹配或不匹配的结果。但是,如果您想要获得针对此控件的记录,则应该在where子句中使用if语句来仅显示条件为真的记录。

SELECT *  FROM TABLENAME WHERE Description IS NOT NULL AND IF ( LENGTH(CONCAT(
IF (Description LIKE '%busy%', '1', ''), 
IF (Description LIKE '%good%', '1', ''), 
IF (Description LIKE '%nature%', '1', ''), 
IF (Description LIKE '%blck%', '1', ''),
IF (Description LIKE '%sweet%', '1', '')
)) > 2, 1, 0)=1

我相信应该有很多更好的解决方案,但我发现这个问题很有趣,这里有一个建议

SELECT IF ( LENGTH(CONCAT(
    IF (Description LIKE '%busy%', '1', ''), 
    IF (Description LIKE '%good%', '1', ''), 
    IF (Description LIKE '%nature%', '1', ''), 
    IF (Description LIKE '%blck%', '1', ''), 
    IF (Description LIKE '%sweet%', '1', '')        
)) > 2, 'Matches', 'Does not match') FROM ....

XDD我根本没有考虑过效率