我有我的语言(拉脱维亚语)单词字典表。如何查询MySQL的确切长度和确切的UTF-8字符
CREATE TABLE words (
value varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
而且我们说,它有3次里面的话:
INSERT INTO words (value) VALUES ('tēja');
INSERT INTO words (value) VALUES ('vējš');
INSERT INTO words (value) VALUES ('feja');
我想要做的是,我想找到的所有的话,这正是长4个字符,其中第二字符是'ē',第三个字符是'j'
对我来说,感觉正确的查询是:
SELECT * FROM words WHERE value LIKE '_ēj_';
但这个查询的问题是,它并没有退回2个条目('tēja','vējš'),但所有三个。 据我所知,这是因为内部MySQL将字符串转换为一些ASCII表示形式?
再有就是BINARY
除了可能LIKE
SELECT * FROM words WHERE value LIKE BINARY '_ēj_';
但是,这也并不返回2项( 'Teja公司', 'vējš'),但只有一个( 'TEJA')。我相信这与UTF-8 2字节的非ASCII字符有关?
所以问题:
什么MySQL查询将返回我确切的两个单词('tēja','vējš')?
预先感谢您
谢谢你,我完全按照你所说的 - 将表格改为:CHARACTER SET utf8 COLLATE utf8_bin。我希望也使用一些cyrilic符号,所以我会坚持使用UTF-8 – oskarae 2010-04-23 23:46:09