【问题标题】:MariaDB czech charactersMariaDB 捷克语字符
【发布时间】: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

标签: mysql mariadb


【解决方案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 是排序规则的概要。
猜你喜欢
  • 2022-06-15
  • 1970-01-01
  • 2014-12-25
  • 2015-04-10
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多