SELECT / LOCATE Query Вывод неправильных результатов - PullRequest
0 голосов
/ 10 января 2019

У меня есть столбец (kills) со значениями, разделенными двоеточиями, такими: 0;2;0. Я хотел выбрать любую среднюю цифру и предложил запрос:

SELECT RIGHT(kills, LOCATE(';', kills) - 1)-LEFT(kills, LOCATE(';', kills) - 1) FROM stats WHERE id='135' AND LOCATE(';', kills) > 0;

(я знаю, что предложение where является специфическим, оно было для целей отладки. Реально было бы установить переменную, которая выводит идентификатор строки)

Он прекрасно работает, когда все результаты имеют одинаковое десятичное место, такое как 1;2;3 или 10;20;30, но возвращает дикие результаты, если регистр имеет иное значение, например 1;20;30 или 10;20;3.

1;20;21 выходы 0. - 10;20;2 выходы -10.

2;20;21 выходы -1. - 20;20;2 выходы -20.

9;20;21 выходы -8. - 90;20;2 выходы -90.

Я хотел бы выбрать среднее значение для всех этих значений, даже если одно значение не разделяет одно и то же десятичное место.

1 Ответ

0 голосов
/ 10 января 2019

Если вам нужно среднее число из трех, то вам нужно второе число. Используйте substring_index():

select substring_index(substring_index(kills, ';', 2), ';', -1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...