MySQL排序不按预期工作

时间:2013-04-08 10:51:44

标签: php mysql sorting

我有一个名为公司的表格如下。

CREATE TABLE IF NOT EXISTS `companies` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `name` varchar(40) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

此表的MySQL talbe数据如下所示。

INSERT INTO `companies` (`id`, `user_id`, `name`) VALUES
(1, 2, 'Mylan'),
(2, 1, 'Intas'),
(3, 48, 'Glenmark'),
(4, 21, 'Amipharma'),
(5, 1, 'XEPA SOUL');

现在我使用以下查询对记录进行排序

SELECT * FROM companies ORDER BY name ASC;
这是我的回归。

  • XEPA SOUL
  • Amipharma
  • Glenmark公司
  • INTAS
  • Mylan公司

这是错误的,因为X首先出现并且必须最后显示。

我不知道为什么会这样。

请提供一些提示或解释,以便我能纠正这一点。

由于

4 个答案:

答案 0 :(得分:3)

您可以使用LTRIM(),

删除左侧空格
  SELECT * FROM companies ORDER BY LTRIM(name) ASC;

答案 1 :(得分:2)

为获得最佳效果,您可以使用orderby作为id

SELECT * FROM公司ORDER BY id ASC;

答案 2 :(得分:1)

正如评论中的其他人所说,我认为你在XEPA SOUL面前有一个额外的空白区域。如果需要,您可以在ORDER BY clausule {/ p>中TRIM使用{{3}}数据

SELECT * FROM companies ORDER BY TRIM(name) ASC;

答案 3 :(得分:1)

默认字符集和排序规则是latin1和latin1_swedish_ci,因此非二进制字符串默认情况下不区分大小写。这是整理设置的问题。 试试这个

SELECT * FROM公司ORDER BY CONVERT(名称USING latin2)ASC