我的SQL查询
SELECT keyword
FROM table
WHERE MATCH (keyword)
AGAINST ('eco*' IN BOOLEAN MODE);
将单元格与以下单词匹配:economy、ecology、echoscopy(为什么?)、echo(为什么?)等。
其他SQL查询
SELECT keyword
FROM table
WHERE MATCH (keyword)
AGAINST ('eci*' IN BOOLEAN MODE);
将单元格与单词:echidna匹配。
然而,和查询都与word ectoplasm不匹配。
为什么echo,echoscopy匹配'eco*'和echidna匹配'eci*'
我认为这个问题的关键因素是字母组合"ch“。
为什么它是这样工作的,我如何避免这种匹配?
发布于 2010-09-01 08:42:50
问题(特征?)在校对里。"c“和"ch”由于utf8_lithuanian_ci的校对而被同等对待。
编辑:
将排序规则更改为utf8_unicode_ci只修复某些问题。
真正的解决方案是使用utf8_bin,它匹配每个字符的二进制值,这意味着:
sensitive
发布于 2010-08-31 14:03:21
它匹配的原因是匹配..。and使用正则表达式,*表示前面的char ("o")可以在0到9999999999999999999^次之间。你想要匹配的是
eco.*将与“生态”和“生态”相匹配,而不是“回声”。
eco.+将与“生态”和“生态系统”相匹配,而不是“生态”或“回声”。
发布于 2010-08-31 12:45:23
也许你可以试试这个
SELECT keyword FROM table WHERE keyword LIKE 'eco%';https://stackoverflow.com/questions/3608972
复制相似问题