【问题标题】:Mysql Returning unnecessarily rowsMysql返回不必要的行
【发布时间】:2017-09-01 09:14:28
【问题描述】:
SELECT * FROM test_table WHERE name='Süleyman';

结果:

使用我的查询,我只想返回具有 name="Süleyman" 的行,但 MySQL 也返回 name="Suleyman" 行!
为什么会发生这种情况,我该如何解决?

【问题讨论】:

  • 似乎是排序规则问题。比较是根据将ü 视为u 的排序规则完成的,通常是除德语以外的任何语言。检查您的语言/区域设置。

标签: mysql sql


【解决方案1】:

试试这个

SELECT * FROM test_table WHERE name='Süleyman' COLLATE utf8_bin;

你可以在这里看到一个 SQL fiddle http://sqlfiddle.com/#!9/508b5d/2/0

【讨论】:

  • 此命令运行成功,但在我的表选项中字符集是:utf8--UTF-8 unicode 和排序规则 utf8_general_ci?
  • 确实,在这些字符集中,执行查询时存在特殊字符的映射:dev.mysql.com/doc/refman/5.7/en/charset-unicode-sets.html。但是,您可以将上述语句附加到查询中以进行异常处理,您应该没问题。
  • 我必须使用 Collat​​ion utf8_bin 创建每个特定的字符列,而不是使用命令,非常感谢“ice 13”
  • 现在还有一个问题,我'name=süleyman'(小写)写的时候没有返回值?
  • 解决了 latin_1
猜你喜欢
  • 2014-02-11
  • 2018-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多