MySQL WHERE IN(字符串的子字符串)?

时间:2018-10-16 20:39:05

标签: mysql sql

所以我正在尝试这样做:

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

我要在哪里发生,它返回具有匹配的customerID的条目。

不幸的是,值CID是由空格分隔的所有匹配CID的字符串。我已尝试将其更改为某种列表,但为此没有运气。如果我可以使用诸如字符串拆分器之类的东西来解决问题,但在MySQL中似乎不可用。

很抱歉,这个相对简单的问题,但是一个小时的谷歌搜索并没有给出明确的答案。

3 个答案:

答案 0 :(得分:1)

我想知道您是否可以使用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

答案 1 :(得分:0)

一种方法是like

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

我确实主张您将字符串分开。如果它来自表,那么您可能需要一个结点/关联表。

答案 2 :(得分:0)

尝试一下: WHERE FIND_IN_SET(CustomerID, REPLACE(spacedList, ' ', ',')) > 0

FIND_IN_SET

您可能还需要将CustomerID强制转换为字符,但我会尝试先不强制转换。