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 捷克语字符的主要内容,如果未能解决你的问题,请参考以下文章

在 MariaDB 中搜索子字符串或单词

mariadb数据库字符编码设置

设置mariadb字符集为utf8

字符集和排序规则会影响 MySQL/MariaDB 中的查询性能吗?

SQL Concat int 到 mariadb 中的字符串

如何从 MySQL/MariaDB 中的二进制列格式化 uuid 字符串