使用mysql/php进行严格搜索
我在这件事上被困了好几个小时,如果有人能帮助我,我将不胜感激 我正在对数据进行mysql搜索: 行Id列表数据 1 3,2,7,11 2 1,27 3 2,17,44 4 19,77 我的问题是我想做一个严格的搜索 假设我想搜索上面数据中有“7”的行 如果我这样做: 从列出数据(如“%7%”)的表中选择id 显然将返回所有4行 我只想得到第一排作为我的结果 我怎样才能做到这一点 提前感谢:使用 顺便说一句,您应该规范化您的数据,以避免将来出现此类问题。请在一列中始终只存储一个值,而不是多个值。您可以使用“在集合中查找”函数,因为另一个答案或正则表达式中有一个示例:使用mysql/php进行严格搜索,php,mysql,regex,mysqli,Php,Mysql,Regex,Mysqli,我在这件事上被困了好几个小时,如果有人能帮助我,我将不胜感激 我正在对数据进行mysql搜索: 行Id列表数据 1 3,2,7,11 2 1,27 3 2,17,44 4 19,77 我的问题是我想做一个严格的搜索 假设我想搜索上面数据中有“7”的行 如果我这样做: 从列出数据(如“%7%”)的表中选择id 显然将返回所有4行 我只想得到第一排作为我的结果 我
SELECT id FROM `table` WHERE list_data REGEXP '(^|,)7($|,)'
然而,您似乎试图将多个数据链接放到一个字段中。如果是这样,那么就避免这样做——因为这违反了关系数据库原则。改为使用链接表,然后将使用运算符重写查询。您的表格式错误。一定是这样
id Data
1 3
1 2
1 7
1 11
2 1
2 27
3 2
3 17
3 44
4 19
4 77
和查询
select id from table where data = 7
没有Ben限制将不起作用,因为该数据可能位于任何一行,而不仅仅是第一行。这只是一个示例数据+忘记了在集合中查找集合。很好。是的,我知道,但这就是它的设计。设计缺陷我知道:哦,你还不知道。当您获得数据和/或流量时,您就会知道这一点。
select id from table where data = 7