Clickhouse - как мне сделать запрос Natural sort с ограничением? - PullRequest
2 голосов
/ 25 октября 2019

Я хочу, чтобы мои запросы на выборку могли выполнять естественную сортировку, используя следующие понятия: https://rosettacode.org/wiki/Natural_sorting

1 Ответ

1 голос
/ 26 октября 2019

Вы можете играть с настройками сортировки , как в запросе ниже.

Примите во внимание, что ClickHouse имеет ошибку сортировки # 7482 и не работает на некоторых языках, таких каккак ru , de .

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    │
└───────────┘
*/
...