问题描述
我第一次使用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)