Concat Regex в левом соединении - PullRequest
0 голосов
/ 12 декабря 2018

Мне нужно получить данные из таблицы, где значения строк представляют собой строки, разделенные запятыми, например: 5,10,16,25,7 Я также использую LEFT JOIN, поэтому мне нужно что-то вроде этого:

// ...

SELECT ... s.`other_thing`

LEFT JOIN `something` s
ON w.`whatever` = REGEXP CONCAT('(,|^)', s.`id`, '(,|$)')

// ...

Мне нужно получить что-то вроде этого: (,|^)5(,|$) на ON

РЕДАКТИРОВАТЬ: Я решил это с помощью простого LIKE CONCAT('%', s.id, '%')

РЕДАКТИРОВАТЬ 2: Если вы хотите объединить регулярное выражение, вы можете использовать: REGEXP CONCAT('(^|,)(',s.id,')(,|$)')

1 Ответ

0 голосов
/ 12 декабря 2018

Я настоятельно не рекомендую эту модель данных.Ваш следующий вопрос, скорее всего, касается производительности - и на самом деле надежды нет.У вас должна быть таблица соединений / связей для списков, а не хранение нескольких значений в строке.

Иногда мы сталкиваемся с очень-очень плохими проектными решениями других людей.Если это так, MySQL имеет функцию, чтобы помочь:

SELECT ... s.`other_thing`
FROM x LEFT JOIN
     something s
     ON find_in_set(s.id, x.really_bad_list_format) > -
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...