【问题标题】:Select characters like ù选择像ù这样的字符
【发布时间】:2013-12-15 13:54:16
【问题描述】:

有一个表有 2 条记录 - uù

CREATE TABLE `tbl` (`text` text NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `tbl` (`text`) VALUES ('u'), ('ù');

我想用 ù: 选择行

SELECT * FROM `tbl` WHERE `text` = 'ù';

结果是

+------+
| text |
+------+
| u    |
| ù    |
+------+

这里有什么问题?我该如何处理这些角色?

【问题讨论】:

  • 我无法在 Linux 上使用 MySQL 5.1.72 复制该结果。我只取回ù 记录。从字面上复制并粘贴您在问题中的内容。
  • 奇怪,我在Windows7和Ubuntu12上都有这个结果
  • 我使用的是 Ubuntu 13.10。
  • 当使用上面的CREATE TABLE 时,我仍然得到latin1 字符集,而不是utf8,这可以解释为什么我们的结果不同。无论如何,我认为 chooban 为您指明了正确的方向。

标签: mysql unicode collation


【解决方案1】:

这与mysql比较值时使用的排序规则有关。如果您运行以下查询,您将看到哪个排序规则有效:

show collation where Charset = 'utf8';

其中一个的Default 值应为yes。就我而言,它是utf8_general_ci。此排序规则使用 Unicode 排序来区分带重音的字符和不带重音的字符。

如果您运行以下查询:

SELECT * FROM `tbl` WHERE `text` = 'ù' collate utf8_bin;

那么你只会得到一排回来。 MySQL documentation 有更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    相关资源
    最近更新 更多