MySQL ORDER BY结果不是按字母顺序排列的

时间:2011-10-06 23:18:26

标签: php mysql

我一直试图找到这个问题的解决方案,但没有任何运气。我知道这里有几个类似的问题,但它们都是更复杂的情况,并不适用。好的,问题是:

我有一个非常简单的表,其中包含交易收款人及其相关类别的列表。结构为id - intname- varcharcat - varchar

我正在尝试执行简单查询以按字母顺序显示收款人姓名,使用while循环添加到选择框中。无论我是否使用ASC或DESC,它们都没有明显的顺序显示。条目的开头或结尾没有空格。

以下是查询 - SELECT name FROM payees ORDER BY name 尝试在phpMyAdmin中按字母顺序排序时,我得到相同的结果。 id是一个自动增量int字段和主键。

谢谢!

更新

以下是示例输出 - SELECT name FROM payees ORDER BY name ASC

  • Sheetz
  • 沃尔格林
  • 阿拜的
  • Dollar General
  • 埃克森
  • 的iTunes
  • 红盒子
  • 星巴克
  • 沃尔玛

整理是utf8_unicode_ci

解决

感谢@JohnFlatness解决难题。事实证明这实际上是代码中的一个缺陷 - 这个项目有一个移动和常规版本。移动版脚本中存在一个错误,即在name列条目的开头添加了空格。我发现检查的条目很好,错过了那些有空白区域的条目。

感谢您的帮助 - 通过评论解决,第一个对我来说lol

2 个答案:

答案 0 :(得分:1)

这些字段可能并不包含您认为他们所做的数据。尝试转储SELECT HEX(name) FROM payees的输出以准确显示每个字段中的内容。输出以供参考:

417262792773                    Arby's
446F6C6C61722047656E6572616C    Dollar General
4578786F6E                      Exxon
6954756E6573                    iTunes
52656420426F78                  Red Box
53686565747A                    Sheetz
537461726275636B73              Starbucks
57616C677265656E73              Walgreens
57616C6D617274                  Walmart

演示:http://sqlize.com/904pho3tUG

答案 1 :(得分:0)

SELECT name FROM payees ORDER BY name trim(ASC)

同时验证表格排序是否以* _ci

结束