问题标签 [natural-sort]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
1925 浏览

php - 从 MySQL 返回结果时的数字顺序

我的数据库中的表中有以下类型的标题:

选择查询将始终返回如下结果:

...省略主题 2、主题 3 等...直到所有青少年都得到主题 2 等...

我怎样才能得到我的结果:

.... 一直到主题 9,然后才有主题 10?

0 投票
2 回答
643 浏览

sql-server - NHibernate中的自然排序

我有一个返回对象列表的休眠查询,我想按标题排序。这是一个用户维护的字段,我们的一些客户喜欢在他们的标题前加上数字,这不是我可以控制的。数据是这样的:

一个传统的

导致文本排序:

这是正确的,因为这是一个 nvarchar 字段,但是有什么方法可以让数字也进行排序?

似乎有几种解决方法涉及在所有字段前加上前导 0 之类的前缀,但是这些方法中的任何一个都可以通过 NHibernate 工作吗?

此应用程序可在 Oracle 和 MsSQL 上交替运行。

干杯,

马特

0 投票
7 回答
14258 浏览

c# - 排序列表在 C# 中

如何根据项目的整数值对列表进行排序

清单就像

结果应该是这样的

有没有办法使用 LINQ 或 Lambda 表达式来做到这一点?

提前致谢

0 投票
2 回答
718 浏览

.net - 写一个更好的自然排序(比我的)

我在这里添加了对这个问题的答案:在 C#中排序List<String>,它需要自然的排序顺序,即处理嵌入数字的顺序。

然而,我的实现是幼稚的,代替所有关于应用程序如何通过假设事情(土耳其测试任何人?)来正确处理 Unicode 的帖子,我想我会寻求帮助来编写更好的实现。或者,如果有.NET的内置方法,请告诉我:)

我对该问题的答案的实现只是遍历字符串,逐个字符进行比较,直到在两者中都遇到一个数字。然后它从两个字符串中提取连续的数字,这可能导致长度不同,用前导零填充最短的数字,然后进行比较。

但是,它存在问题。

例如,如果您在字符串 x 中有两个代码点,它们一起构成字符 È,但在另一个字符串中您只有一个代码点,即那个字符。

我的算法会在这些问题上失败,因为它将变音符号代码点视为单个字符,并将其与另一个字符串中的 È 进行比较。

谁能指导我如何正确处理这个问题?我希望支持指定一个CultureInfo对象来处理语言问题,比如在德国比较“ss”和“ß”,以及类似的事情。

我想我需要让我的代码枚举“真实字符”(我不知道这里的真实术语)而不是单个代码点。

什么是正确的方法?

另外,如果“自然”意味着“人类期望它的工作方式”,我会添加以下内容来思考:

  • 日期和时间呢?
  • 浮点值呢?
  • 还有其他被认为是“自然”的序列吗?
    • 这应该延伸到什么程度?(Eeny,meeny,miny,萌)
0 投票
2 回答
1317 浏览

php - sql按数字排序然后按字母顺序

在这个例子中:

我怎样才能按这个顺序排序?:

我使用 abs(value) 但在字母大小写中不起作用

0 投票
3 回答
395 浏览

sql - 如何在 MYSQL 中按名称创建订单,就像在窗口中使用订单名称一样

带有行的表格图片有名称

mysql命令:1.jpg,10.jpg,11.jpg,2.jpg,3.jpg,......

问题:

我希望它像 Window 一样对所有类型名称进行排序1.jpg,2.jpg,3.jpg,4.jpg,5.jpg,6.jpg,7.jpg,8.jpg,9.jpg,10.jpg,11.jpg

它必须与其他情况一起使用

请帮我

0 投票
1 回答
1748 浏览

mvvm - 如何使用 ViewModel 为 silverlight 数据网格实现自然(人类字母数字)排序?

在使用数据网格的 Silverlight 项目中,我使用了一些定义“标签编号”的列,它是一个 Varchar。

我想按照“http://www.interact-sw.co.uk/iangblog/2007/12/13/natural-sorting”中所述的自然排序顺序或任何可能的方式对该列进行排序。

当我环顾数据网格时,我只看到了 SortMemberPath="stringProperty"。因此,我的排序只是像字符串排序一样工作。例如:

Z1

Z10

Z2

Z20

我希望它在哪里排序:

Z1

Z2

Z10

Z20

这方面的建议会有很大帮助。

0 投票
3 回答
11195 浏览

sql - 如何在 PostgreSQL 中对包含单词和数字的 VARCHAR 列进行排序?

我需要使用 varchar 列,使用数字和文本顺序来订购选择查询。查询将在 java 程序中完成,使用 jdbc over postgresql。

如果我ORDER BY在 select 子句中使用,我将获得:

但是,我需要获得:

问题是该列也可以包含文本。

这个问题类似(但针对 SQL Server):

如何在 SQL Server 中对包含单词和数字的 VARCHAR 列进行排序?

但是,提出的解决方案不适用于 PostgreSQL。

预先感谢,问候,

0 投票
2 回答
889 浏览

sql - 以类似 Excel 的方式在 MySQL 中对 varchar 列进行排序

我有一个 varchar 列,其中包含混合数据字符串、整数、小数、空白字符串和空值。我想以与 Excel 相同的方式对列进行排序,首先对数字进行排序,然后对字符串进行排序。例如:

  • 1
  • 2
  • 3
  • 3.5
  • 10
  • 11
  • 12
  • 艾伦
  • 鲍勃
  • 卡尔
  • (空白/空)
  • (空白/空)

我尝试过像“ORDER BY my_column+0”这样的东西,它可以正确地对数字进行排序,但不能对字符串进行排序。我希望有人可能知道实现此目的的有效方法。

MartinofD 的建议在很大程度上是有效的,如果我稍微扩展一下,我就能得到我想要的:

SELECT a FROM test ORDER BY a IS NULL OR a='', a<>'0' AND a=0, a+0, a;

虽然很丑,我不确定是否有更好的选择。

0 投票
2 回答
242 浏览

mysql - 如何按数学顺序对具有数字的字段进行排序

我们的数据库中存在以下用户..

如果上述字段按升序排序,则输出如下。

是否可以按顶部的顺序对其进行排序(即列出所有个位数,两位数......)