MySQL WHERE IN (подстроки строки)? - PullRequest
0 голосов
/ 16 октября 2018

Итак, я пытаюсь сделать это:

SELECT customerID, name, email
FROM Customers
WHERE customerID IN (substrings delineated by spaces of CID string)

Где я хочу, чтобы он возвращал записи с совпадающим идентификатором customerID.

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

Извините за относительно простой вопрос, но час поиска в Google не дал четких ответов.

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Интересно, можно ли использовать функцию REPLACE:

SELECT customerID, name, email
FROM Customers
WHERE customerID IN (REPLACE(CID string,' ',','))

https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_replace

0 голосов
/ 17 октября 2018

Попробуйте это: WHERE FIND_IN_SET(CustomerID, REPLACE(spacedList, ' ', ',')) > 0

FIND_IN_SET

Возможно, вам также понадобится привести CustomerID к персонажу, но я бы попробовал сначала без приведения.

0 голосов
/ 16 октября 2018

Один метод - like:

SELECT customerID, name, email
FROM Customers
WHERE CONCAT(' ', CID, ' ') LIKE concat('% ', customerID, ' %') ;

Я действительно рекомендую вам отделить строку.Если он исходит из таблицы, то вам, вероятно, нужна таблица соединения / ассоциации.

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