我在mariadb中有一个名为table1的表,带有utf8字符集有以下记录
field1 Jiri Cerveny Jiří Červený Jiri Červeny Jiři Červený
下面的语句“select*from table1 where field1='jiri cerveny';”我想,它只会回应1条记录,但我收到所有4条记录。任何想法都将不胜感激。谢谢吉里
koaltpgm1#
在搜索中使用正确的排序规则。假设utf8\u捷克语\u ci,您应该:
SELECT field1 FROM table1 WHERE field1='Jiri Cerveny' collate utf8_czech_ci;
测试:
create table table1 (field1 VARCHAR(50)) DEFAULT CHARSET=utf8; INSERT INTO table1 VALUES ('Jiri Cerveny'); INSERT INTO table1 VALUES ('Jiří Červený'); INSERT INTO table1 VALUES ('Jiri Červeny'); INSERT INTO table1 VALUES ('Jiři Červený');
带普通查询
SELECT field1 FROM table1 WHERE field1='Jiri Cerveny' | field1 | |--------------| | Jiri Cerveny | | Jiří Červený | | Jiri Červeny | | Jiři Červený |
带排序规则:
SELECT field1 FROM table1 WHERE field1='Jiri Cerveny' collate utf8_czech_ci; | field1 | |--------------| | Jiri Cerveny |
或者
SELECT field1 FROM table1 WHERE field1='Jiri Červeny' collate utf8_czech_ci; | field1 | |--------------| | Jiri Červeny |
sqlfiddle公司
1条答案
按热度按时间koaltpgm1#
在搜索中使用正确的排序规则。
假设utf8\u捷克语\u ci,您应该:
测试:
带普通查询
带排序规则:
或者
sqlfiddle公司