如何从数据库中查找指定的字符串,使用查询存储为JSON字符串?

时间:2018-03-12 06:16:52

标签: php mysql

我想创建一个查询以搜索特定结果。

假设我有一个数据库字段,比方说category,在此字段中数据存储为JSON对象。

e.g。

({"Facebook":1,"Gmail":0,"LinkedIn":0,"Social":0,"Event":0,"Other":0})

现在我想要一个基于此类别过滤数据的查询。

假设我要搜索包含 Facebook:1 社交: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查询。