SQL SELECT MATCH AGAINST:与我需要的方式不匹配

问题描述

我第一次使用sql的MATCH AGAINST,但无法获得所需的结果。 这是我的查询

SELECT *
FROM fondslijst
WHERE MATCH(Benaming,Verpakking,Auteur01,Auteur02,Auteur03,Auteur04,Auteur05,Auteur06,Auteur07,Auteur08,Auteur09,Auteur10) AGAINST('%dagelijks%')

它与包含'dagelijks''dagelijks '(带有空格)的列正确匹配,但与包含'dagelijkse'(带有e)的列正确匹配。我怀疑我需要使用某种通配符,但是我不确定该使用哪种通配符...

解决方法

尝试使用此功能:

SELECT *
FROM fondslijst
WHERE MATCH(Benaming,Verpakking,Auteur01,Auteur02,Auteur03,Auteur04,Auteur05,Auteur06,Auteur07,Auteur08,Auteur09,Auteur10) AGAINST('dagelijks *' IN BOOLEAN MODE)

Here,您可以找到一些文档

编辑:添加匹配列

SELECT
      *,CASE
            WHEN Benaming LIKE  '%dagelijks%' THEN 'Benaming'
            WHEN Verpakking LIKE  '%dagelijks%' THEN 'Verpakking'
            WHEN Auteur01 LIKE  '%dagelijks%' THEN 'Auteur01
            WHEN Auteur02 LIKE  '%dagelijks%' THEN 'Auteur02'
            WHEN Auteur03 LIKE  '%dagelijks%' THEN 'Auteur03'
            WHEN Auteur04 LIKE  '%dagelijks%' THEN 'Auteur04'
            WHEN Auteur05 LIKE  '%dagelijks%' THEN 'Auteur05'
            WHEN Auteur06 LIKE  '%dagelijks%' THEN 'Auteur06'
            WHEN Auteur07 LIKE  '%dagelijks%' THEN 'Auteur07'
            WHEN Auteur08 LIKE  '%dagelijks%' THEN 'Auteur08'
            WHEN Auteur09 LIKE  '%dagelijks%' THEN 'Auteur09'
            WHEN Auteur10 LIKE  '%dagelijks%' THEN 'Auteur10'
    END as MatchingColumn
FROM fondslijst
WHERE MATCH(Benaming,Auteur10) AGAINST('dagelijks *' IN BOOLEAN MODE)