我有一个名为table的表,其中一行的值如下所示:6,7,8,9我想选择这一行,这是我希望工作的代码:SELECT * FROM table WHERE 8 IN (column)它不工作。然而,工作的代码让我困惑:SELECT * FROM table WHERE 6 IN (column)我尝试了几个值,发现只有列表的第一个元素是有效的。怎么会这样?
table
6,7,8,9
SELECT * FROM table WHERE 8 IN (column)
SELECT * FROM table WHERE 6 IN (column)
utugiqy61#
因为你在比较数字和字符串。6,7,8,9转换为number将是6,因此当do 6 IN (column)时,它将为true。你需要使用FIND_IN_SET函数:
6
6 IN (column)
FIND_IN_SET
SELECT * FROM `table` WHERE FIND_IN_SET(8, `column`);
1条答案
按热度按时间utugiqy61#
因为你在比较数字和字符串。
6,7,8,9
转换为number将是6
,因此当do6 IN (column)
时,它将为true。你需要使用
FIND_IN_SET
函数: