|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
Здравствуйте. Допустим есть поле в таблице 'column_1', в нём есть запись в виде списка чисел '10, 5, 3, 1' Я хотел сделать так: Код: sql 1.
Не сработало. Выдало ошибку "Incorrect parameter count in the call to native function 'GREATEST'". Задача в том что нужно найти большее число при том что список этих чисел находится в базе и (!важно) он не фиксирован, т.е. чисел через запятую может быть больше или меньше. Возможно как-то сделать ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 14:36 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
Necrosss, Лёгкого варианта нет. Костыльный вариант - парсить строку, дробить на фрагменты, преобразовывать в числа, искать максимум. Правильный вариант - изменить схему хранения, чтобы в одном поле хранилось только одно значение, использовать MAX(). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 14:40 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
miksoft, "Правильный вариант" реализовать нет возможности, т.к. подобный список чисел присутствует у каждой строки в таблице. По поводу первого варианта: Какой функцией предлагаете дробить на фрагменты и преобразовывать в числа ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 15:43 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
Necrosss Какой функцией предлагаете дробить на фрагменты и преобразовывать в числа ? Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 15:50 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
Akina, Тут ещё и цикл, получается нужен... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 16:13 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
Ясен пень. На 8+ - обычный CTE, на 5+ придётся генерить список чисел или брать из какой-либо служебной таблицы. Впрочем, на восьмёрке можно распарсить через JSON_TABLE(), без циклов. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 16:24 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 19:20 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
Добавил "современный" метод парсинга CSV-полей: FAQ: обработка строк и парсинг текстов средствами MySQL ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 21:02 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
Necrosss "Правильный вариант" реализовать нет возможности, т.к. подобный список чисел присутствует у каждой строки в таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 21:05 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
Akina Добавил "современный" метод парсинга CSV-полей: FAQ: обработка строк и парсинг текстов средствами MySQL ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 21:05 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
miksoft, Я опечатался. Не в каждой таблице, а в каждой строке. К слову. JSON_TABLE это замечательно, но меня больше интересовало как сравнить числа из списка, нежели как их вывести на экран. Я понял что GREATEST никак не будет работать (можно подставить в скобки любые числа, но кол-во запятых должно быть прописано заранее) Склоняюсь к идее какой-нибудь "сортировки пузырьком" прямо в запросе. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2020, 09:51 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
Necrosss меня больше интересовало как сравнить числа из списка, нежели как их вывести на экран ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2020, 10:24 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
miksoft Akina Добавил "современный" метод парсинга CSV-полей: FAQ: обработка строк и парсинг текстов средствами MySQL Ага, здорово. Еще бы в эту тему что-нибудь аналогичное https://www.sql.ru/forum/687908-2/faq-vyborka-pervoy-posledney-zapisi-v-gruppah ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2020, 13:24 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
paver Еще бы в эту тему что-нибудь аналогичное ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2020, 13:51 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
Akina paver Еще бы в эту тему что-нибудь аналогичное ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2020, 13:55 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
Для нумерации - достаточно. А вот для выбора только первых - увы, оконки применяются к финальному набору. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2020, 14:45 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
Я решил задачу по своему. Выложу сюда, может кому-нибудь пригодится. Для начала изменил тип поля, в котором прописан список чисел на JSON. (и добавил квадратные скобки) Теперь это официально json-массив - '[10, 5, 3, 1]'. Далее пришлось писать свою функцию: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
Функция принимает не отсортированный json-массив и выдаёт отсортированный. Ну а дальше просто: Код: sql 1. 2. 3. 4. 5. 6. 7.
Приветствуются замечания, критика и предложения по сокращению и оптимизации кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2020, 10:13 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
Necrosss Приветствуются замечания, критика и предложения по сокращению и оптимизации кода. Код: sql 1. 2. 3. 4. 5. 6.
И уж тем более когда у тебя входные данные уже JSON - не надо даже превращать CSV-массив в JSON-массив. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2020, 13:15 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
Чтобы не создавать новую тему спрошу здесь (тем более вопрос так или иначе относится к работе выше) JSON_TYPE для JSON_EXTRACT(@Array, '$[0]') показывает INTEGER. Но функция GREATEST/LEAST видит в записи, возвращаемой JSON_EXTRACT строку а не число и поэтому выдаёт неправильный результат. Помогло только CAST(JSON_EXTRACT(@Array, '$[0]') AS UNSIGNED) Почему так ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 16:25 |
|
Функция GREATEST отдельно от списка с параметрами
|
|||
---|---|---|---|
#18+
Necrosss Почему так ? JSON_TYPE показывает, что значение может быть без ошибки интерпретировано как число - однако на самом деле это строковый литерал. А вот GREATEST/LEAST работает в контексте реально переданного значения, и если оно передано как строковое, то и обработается как строка. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2020, 07:35 |
|
|
start [/forum/topic.php?fid=47&msg=39933633&tid=1828722]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
85ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 321ms |
total: | 497ms |
0 / 0 |