所以我的问题是:我从MySQL数据库中得到一个项目列表,然后我想用Javascript对它进行排序(它可以动态编辑)。主要的问题是数字和字符。假设这是数据库中的列表:
3, a, 2, 1, b
该语句将返回:
a, b, 1, 2, 3
但我希望它是:
1, 2, 3, a, b
我的数据库是utf8_unicode_ci,但这无济于事。它仍然会产生错误的结果。(我不能只检查它们是否是数字,然后将它们排序到顶部,因为一个项目也可以命名为“2ome56thing”,并且必须在“asome56thing”之前)。
发布于 2012-07-11 04:14:05
sort(function(a, b) {
// Stuff to get the text out of the DOM
return textb > texta;
}如果texta大于textb,则需要从custom compare function返回-1 (或任何小于0的数字),否则排序将不起作用(甚至可能根本不排序)。更好的:
return textb>=texta ? textb>texta ? 1 : 0 : -1;或
return textb>texta - texta>textb;或
return texta.localeCompare(textb);发布于 2012-07-11 04:13:13
我想这个链接可能会有帮助:http://matthewturland.com/2008/11/05/natural-ordering-in-mysql/
试试这个:
ORDER BY CONCAT(`name`, `login`)+0, CONCAT(`name`, `login`)发布于 2012-07-11 04:13:26
您在mysql中有哪些语言环境设置?
我的排序得到以下输出:
SELECT * FROM sorting ORDER BY a;
+------+
| a |
+------+
| 1 |
| 2 |
| 3 |
| a |
| b |
+------+https://stackoverflow.com/questions/11421068
复制相似问题