STRING_SPLIT в MySql - как это сделать? - PullRequest
0 голосов
/ 22 ноября 2018
SELECT er.pNumber, er.name, ep.fPosition, eo.res
FROM events_shot er, events_shot_final ep, events_shot_final_res eo, events_gear era
WHERE era.idShot=er.idShot AND ep.idPhoto=era.idPhoto AND eo.idShot=era.idShot
    AND era.idShot=42 AND eo.shotType='PRT'
    AND er.pNumber IN (
        SELECT *
        FROM STRING_SPLIT(eo.photosId,'-')
        )

shotsId - это строка типа 12-1-8-7 ... с n pNumber id, разделенным '-'

К сожалению,запрос вернет эту ошибку:

Код ошибки: 1064. У вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '(eo.photosId,' - '))' в строке 7

Я не могу изменить базу данных, какя могу изменить свой запрос?

Буду признателен за любую помощь, которую вы можете предоставить.

1 Ответ

0 голосов
/ 22 ноября 2018

Исправьте вашу модель данных!Не храните несколько значений в одном столбце.

Изучите правильный синтаксис SQL! Никогда не используйте запятые в предложении FROM. Всегда используйте правильный, явный, стандартный JOIN синтаксис.

При этом вам не нужно разбивать строку.Вы можете использовать строковые операции:

AND CONCAT('-', eo.photosId, '-') LIKE CONCAT('%-', er.pNumber, '-%')

Но вам действительно следует начать работу по исправлению модели данных, как только этот запрос заработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...