поиск значений с использованием предложения like в столбце псевдонимов - PullRequest
0 голосов
/ 20 февраля 2020

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

Таблица:

id        name

i         school,education 

mysql запрос:

    SELECT id,name, lower((REPLACE(name, ',', ''))) as test FROM `list`
    where test like '%education%'

1 Ответ

0 голосов
/ 20 февраля 2020

Вы должны серьезно избегать хранения данных CSV в отдельных столбцах таблицы, как вы это делаете в настоящее время. Тем не менее, вот один из возможных обходных путей:

SELECT id, name
FROM list
WHERE CONCAT(',', LOWER(name), ',') LIKE '%,education,%';

Идея, лежащая в основе вышеупомянутого трюка, состоит в том, чтобы создать строку CSV name, выглядящую примерно так:

,A,B,C,D,

То есть каждое значение имени всегда окружено запятыми с обеих сторон. Затем нам нужно только проверить, присутствует ли ,somename, в этой строке CSV.

...