【问题标题】:MySQL sorting Ä and Ö with utf8_general_ciMySQL 使用 utf8_general_ci 对 Ä 和 Ö 进行排序
【发布时间】:2015-07-24 16:28:29
【问题描述】:

有没有什么方法可以在不改变连接排序规则的情况下正确地对字符 Ä 和 Ö 进行排序?我正在使用 PHP 和 PDO。

如果这不明智...我尝试使用将每个表转换为 utf8_swedish_ci ALTER TABLE tablename COLLATE utf8_swedish_ci; 但它似乎不起作用。 A前面还有Ä,怎么了?

编辑:我手动将每个字段设置为 utf8_swedish_ci,现在它可以工作了,但有没有更简单的方法?

【问题讨论】:

  • 字段也可以有与其包含表不同的排序规则...
  • @MarcB,有没有办法让字段的排序规则始终与表格的排序规则相同?
  • 删除字段本身的任何覆盖,它应该只使用表上的任何内容,但您可能应该在删除字段覆盖之前强制该字段为表的排序规则 - 不确定是否 mysql将为您转换或仅转换原始二进制数据。

标签: mysql utf-8 collation


【解决方案1】:

以这张表为例:

CREATE TABLE `countries` (
    `countryid` INT(4) UNSIGNED NOT NULL AUTO_INCREMENT,
    `country` VARCHAR(44) NOT NULL,
    PRIMARY KEY (`countryid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

要正确排序国家列,请使用此查询:

ALTER TABLE `countries`
    CHANGE COLUMN `country` `country` VARCHAR(44) NOT NULL COLLATE 'utf8_swedish_ci' AFTER `countryid`;

正如您提到的,您需要对要排序的列进行排序。

【讨论】:

    猜你喜欢
    • 2016-12-07
    • 2011-02-10
    • 2011-07-28
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多