MariaDB 捷克语字符
Posted
技术标签:
【中文标题】MariaDB 捷克语字符【英文标题】:MariaDB czech characters 【发布时间】:2018-05-15 10:52:25 【问题描述】:我在 MariaDB 中有一个名为 table1 的表,带有 utf8 字符集
有以下记录
field1
Jiri Cerveny
Jiří Červený
Jiri Červeny
Jiři Červený
以下语句“SELECT * FROM table1 WHERE field1='Jiri Cerveny';”
我希望,它只会响应 1 条记录,但我收到了所有 4 条记录。
任何想法都会受到赞赏。
谢谢 吉日
【问题讨论】:
您很可能需要将表格的字符集更改为支持重音字符的字符集。现有数据可能不会迁移。 还有,哪个操作系统? 它由 Linux CentOS 提供服务。根据表,SQLFIDDLE 正在关注sqlfiddle.com/#!9/e3da7f/1 【参考方案1】:在搜索中使用正确的collation。
假设 utf8_czech_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
【讨论】:
看来,我原来的表有问题。包含 SQLFIDDLE > sqlfiddle.com/#!9/e3da7f/1ř
和 Č
使用 utf8_czech_ci 做你想做的事。但是'ý' ='y'。我认为 mysql 8.0 及其 utf8mb4_czech_ci 也是如此。 Here 是排序规则的概要。以上是关于MariaDB 捷克语字符的主要内容,如果未能解决你的问题,请参考以下文章
字符集和排序规则会影响 MySQL/MariaDB 中的查询性能吗?