首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按错误操作排序(MySQL)

按错误操作排序(MySQL)
EN

Stack Overflow用户
提问于 2012-07-11 04:04:45
回答 4查看 245关注 0票数 0

所以我的问题是:我从MySQL数据库中得到一个项目列表,然后我想用Javascript对它进行排序(它可以动态编辑)。主要的问题是数字和字符。假设这是数据库中的列表:

3, a, 2, 1, b

该语句将返回:

a, b, 1, 2, 3

但我希望它是:

1, 2, 3, a, b

我的数据库是utf8_unicode_ci,但这无济于事。它仍然会产生错误的结果。(我不能只检查它们是否是数字,然后将它们排序到顶部,因为一个项目也可以命名为“2ome56thing”,并且必须在“asome56thing”之前)。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-11 04:14:05

代码语言:javascript
复制
sort(function(a, b) {
    // Stuff to get the text out of the DOM
    return textb > texta;
}

如果texta大于textb,则需要从custom compare function返回-1 (或任何小于0的数字),否则排序将不起作用(甚至可能根本不排序)。更好的:

代码语言:javascript
复制
    return textb>=texta ? textb>texta ? 1 : 0 : -1;

代码语言:javascript
复制
    return textb>texta - texta>textb;

代码语言:javascript
复制
    return texta.localeCompare(textb);
票数 0
EN

Stack Overflow用户

发布于 2012-07-11 04:13:13

我想这个链接可能会有帮助:http://matthewturland.com/2008/11/05/natural-ordering-in-mysql/

试试这个:

代码语言:javascript
复制
ORDER BY CONCAT(`name`, `login`)+0, CONCAT(`name`, `login`)
票数 0
EN

Stack Overflow用户

发布于 2012-07-11 04:13:26

您在mysql中有哪些语言环境设置?

我的排序得到以下输出:

代码语言:javascript
复制
SELECT * FROM sorting ORDER BY a;
+------+
| a    |
+------+
| 1    |
| 2    |
| 3    |
| a    |
| b    |
+------+
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11421068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档