为了使我的问题简单,任何人都知道为什么此查询返回 true
SELECT 'الجنة' ='الْجِنَّةِ' COLLATE utf8_unicode_ci ;
虽然此查询返回 false
SELECT 'الجنة' LIKE '%الْجِنَّةِ%' COLLATE utf8_unicode_ci ;
我怎么能让后者返回 true ?谢谢 。
我认为您想阅读 MATCH... AGAINST... 以处理“自然语言全文搜索”
我将 mysql.com 给出的示例加载到一个 sql fiddle 中,稍微修改它以包含您的阿拉伯语字符串,它按预期工作。
在这里查看我的 sqlfiddle:http ://sqlfiddle.com/#!2/92317/1
(现在使用 BOOLEAN MODE 并定义 CHARSET 和 COLLATION)
@Nyran91 更新了 sqlfiddle:http ://sqlfiddle.com/#!2/4a7004/3
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO articles (title,body) VALUES
('الْجِنَّةِ DCKIEW', 'DAVADV الْجِنَّةِ AVADV')
SELECT * FROM articles
WHERE MATCH (title,body)
AGAINST ('الجنة' IN BOOLEAN MODE);
这里我修改了 AllInOne 的 sqlfiddle 以使其工作:http://sqlfiddle.com/#!2/4a7004/3
更改NATURAL LANGUAGE MODE
为BOOLEAN MODE
并添加DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
到 db 结构中。