【发布时间】:2018-02-07 10:15:16
【问题描述】:
我想检查表ssd 是否有一行包含值2280(一个子字符串),但问题是我只能得到一个字符串来检查其中包含多个值,包括子字符串。表ssd:
----+-------------------
id | m2len
----+-------------------
1 | 2280
----+-------------------
2 | 2260
----+------------------
查询:
$m2len = "2242 2260 2280 22110"
$sql = "SELECT m2len FROM ssd WHER m2len LIKE '%$m2len%'";
即使表 ssd 的行 m2len 包含值 2280,此查询也不提供任何输出。
有没有办法用 MySQL 检查一行是否包含来自字符串 (2242 2260 2280 22110) 的子字符串 (2280)?
注意:这个问题可能看起来类似于SELECT MySQL field that contains a substring,但这不是因为另一个问题只是检查字符串是否包含子字符串,但在这里我试图做相反的事情。
更新:
@JohnWoo 的回答有效。但是对于像0、80、22 这样的其他值存在问题,它也会返回那些不需要的行。 我想要完全匹配。
该表还可能包含以下值:
id | m2len
----+-------------------
1 | 2280
----+-------------------
2 | 2260
----+------------------
3 | 0
----+------------------
4 | 80
----+------------------
【问题讨论】:
-
确切的问题是什么,您是否只需要从字符串中提取第三个值,是否要匹配所有值等?
-
该行只包含一个值,即
2280,但我必须检查的字符串有多个值2242 2260 2280 22110。现在我不能使用LIKE %'2242 2260 2280 22110'%来查找2280 -
似乎您想检查字符串中的每个元素。您可以使用 explode
$m2len_array = explode(" ",$m2len);将变量$m2len分解为 array() 在$m2len_array上使用 foreach 来针对每个数组元素构建查询的 where 部分。