【问题标题】:Special characters select issues with MySQLMySQL 的特殊字符选择问题
【发布时间】:2016-09-04 07:10:27
【问题描述】:

基于http://www.i18nqa.com/debug/utf8-debug.html,我想在我的 MySQL 表中执行搜索,以查看是否存在编码问题的行。

如果我运行以下查询:

select t.col1 from table t where t.col1 like '%Ú%' 

它将带来所有包含“as”字符的 t.col1。

如何更改查询以使其仅获取包含“%Ú%”的行,而不是所有包含“%as%”的行

【问题讨论】:

标签: mysql utf-8 character-encoding special-characters iso-8859-1


【解决方案1】:

如果您使用排序规则 latin1_swedish_ci,请尝试此操作

select t.col1 from table t where t.col1 regexp '^[Ú]';

【讨论】:

  • 请注意,REGEXP 相当蹩脚——它不理解字符集,只理解字节。因此,Hassan 使用它碰巧奏效了。
【解决方案2】:

使用 MySQL 的排序规则,大小写折叠和重音去除可以一起使用。

如果您两者都不需要,请使用..._bin 排序规则作为您正在使用的字符集。

WHERE foo LIKE '%Ú%' COLLATE utf8_bin

更快的方法是将foo 声明为COLLATE utf8_bin,而不是你拥有的任何东西。 (注意:utf8 的默认值为utf8_general_ci。)

【讨论】:

    猜你喜欢
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 2018-04-18
    • 2016-03-07
    • 1970-01-01
    相关资源
    最近更新 更多