Сортировка по столбцу массива

#mysql #sql

#mysql #sql

Вопрос:

Существуют ли какие-либо базы данных, которые имеют четко определенное поведение при сортировке по столбцу массива? Например, с помощью mysql:

 WITH sort (letter, number) AS (
    select 'a', 1 union select 'a', 2 union
    select 'b', 4 union select 'b', 5
) SELECT letter, json_arrayagg(number) ids from sort group by letter order by ids -- [ASC|DESC doesn't matter]

# letter, ids
a, [1, 2]
b, [4, 5]
 

Имеют ли другие базы данных четко определенную сортировку для типа массива или как это обычно работает? Я надеялся, что один из них поддерживал сортировку массива «как если бы» он был приведен к строке (без необходимости делать это вручную).

Комментарии:

1. Сортировка по массиву не имеет смысла. четко определенное поведение при сортировке по столбцу массива? это неверно определено. dbfiddle.uk /…

2. @Akina может быть, не по умолчанию… Я полагаю, имеет смысл, если кто-то специально преобразует его в строку и хочет просмотреть ['a','b'] раньше ['c','h'] , нет?

3. Столбец массива JSON (кажется) сортируется только по 1-му элементу (т. Е. ORDER BY json_array_column Равен ORDER BY json_array_column.[0] ). Да, вы можете использовать CAST(ids AS CHAR) — но вы получите простой CSV, в котором числа преобразуются в строки (разной длины!), У вас будет обычная проблема «сортировать числа как строки».

4. @Akina ах, я понимаю — хорошая мысль, спасибо!

5. @samuelbrody1249 . , , MySQL не поддерживает массивы. Вы ссылаетесь на значение JSON. И JSON на самом деле не имеет понятия о том, что вы хотите. Могут быть способы преобразовать его в строку.