首页 > 解决方案 > Clickhouse - 如何使用限制进行自然排序查询?

问题描述

我希望我的选择查询能够使用这些概念进行自然排序:https ://rosettacode.org/wiki/Natural_sorting

标签: clickhousenatural-sort

解决方案


您可以使用如下查询中的排序规则设置。

考虑到 ClickHouse 有排序规则错误#7482并且对于某些语言(例如ende )失败。

SELECT arrayJoin(['kk 50', 'KK 01', '    KK 2', '  KK    3', 'kk 1', 'x9y99', 'x9y100']) item
ORDER BY item ASC
/*
Result:

┌─item──────┐
│     KK 2  │
│   KK    3 │
│ KK 01     │
│ kk 1      │
│ kk 50     │
│ x9y100    │
│ x9y99     │
└───────────┘
*/


SELECT arrayJoin(['kk 50', 'KK 01', '    KK 2', '  KK    3', 'kk 1', 'x9y99', 'x9y100']) item
ORDER BY item ASC COLLATE 'tr-u-kn-true-ka-shifted'
/*
Result:

┌─item──────┐
│ kk 1      │
│ KK 01     │
│     KK 2  │
│   KK    3 │
│ kk 50     │
│ x9y99     │
│ x9y100    │
└───────────┘
*/

推荐阅读