我想创建一个查询以搜索特定结果。
假设我有一个数据库字段,比方说category
,在此字段中数据存储为JSON对象。
e.g。
({"Facebook":1,"Gmail":0,"LinkedIn":0,"Social":0,"Event":0,"Other":0})
现在我想要一个基于此类别过滤数据的查询。
假设我要搜索包含 Facebook:1 和社交:1
的数据那么如何进行过滤数据的查询呢?
答案 0 :(得分:0)
有另一张桌子(如评论中提到的劳伦斯)是通常的方法。但是如果您必须使用当前格式,那么您可以使用regx进行喜欢查询,如果社交网络的序列是固定的,那么查询将更简单。这个SO post有一些例子。
更新:如果您的类别集是固定的,并且与评论中提到的顺序相同,那么您甚至不需要使用like或regex。你可以做一个精确的字符串匹配。
使用类似以下的函数来获取匹配的字符串 -
function getCategoryString($facebook = 0, $gmail =0, $linkedIn = 0, $social=0, $event=0, $other=0)
{
$qry = "({\"Facebook\":".$facebook.",\"Gmail\":".$gmail.",\"LinkedIn\":".$linkedIn.",\"Social\":".$social.",\"Event\":".$event.",\"Other\":".$other."})";
return $qry;
}
然后在查询中使用该字符串 -
$sql = "SELECT * FROM `table` WHERE `category` = ".getCategoryString(1,1,0,0,0,0)
请注意,必须修改它才能正确转义categoryString。我不在php中工作,所以不确定在php中使用什么函数来逃避mysql查询。