我有一个名为公司的表格如下。
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;
这是我的回归。
这是错误的,因为X
首先出现并且必须最后显示。
我不知道为什么会这样。
请提供一些提示或解释,以便我能纠正这一点。
由于
答案 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