Привет! Я пишу запросы MySQL для базы данных, которую я не проектировал и не могу изменить на данный момент, и у меня возник вопрос, я не проверял это, поэтому он может работать как задумано, но я не точно.
Таким образом, в таблице, которую я ищу, есть только три столбца: id, title и description, но столбец description на самом деле представляет собой список другой информации, хранимой стандартным способом (это для музыкальных метаданных, поэтому это будет выглядеть примерно так: ):
id | название | описание
1 | stairway_to_heaven | исполнитель = led_zeppelin, жанр = рок, альбом = led_zeppelin_iv
Что я хочу сделать, это написать запрос, который выберет все песни с исполнителем, содержащие строку zeppelin
То, что я изначально придумал, это
"SELECT * FROM table WHERE description LIKE %artist=%zeppelin%"
Хотя я считаю, что это должно работать, если имя присутствует в описании, я считаю, что проблема заключается в сценарии, где я хочу найти всех исполнителей, которые содержат рок, но это выглядело бы следующим образом
"SELECT * FROM table WHERE description LIKE %artist=%rock%"
Мой первый вопрос: это выберет строку, потому что рок в строке после Artist = правильный?
Мой второй вопрос: это решит проблему?
"SELECT * FROM table WHERE description LIKE %artist=%rock% AND WHERE description NOT LIKE %artist=%,%rock%"
Я думал, что если я опущу строки, которые имеют (, разделитель) между Artist = и тегом сравнения, он не выберет вышеуказанную строку. Моя потенциальная проблема заключается в том, что если разделитель указан в имени исполнителя, он потерпит неудачу, но я смогу решить эту проблему, выбрав разделитель, которого нет ни в одном из значений поля, и принудительно установив, что это свойство содержит.
Также извините за любые проблемы с форматированием, это моя первая попытка написать вопрос.
Спасибо,
twain249