2012-11-16 174 views
0

林存储人对象作为JSON在我的SQLite数据库。该表格将有几百个人物对象的记录。我需要的是根据“名称”属性来查询人员。正则表达式JSON字符串

调查之后,我想通了,使用SQLite的GLOB方法在JSON中的元素进行正则表达式的搜索的。

我的样本JSON是这样。

{"name":"john","age":"22","father-name":"jackson"} 

现在我想要一个RegEx匹配器来获取与JSON中的name属性提供的SubString的一部分相匹配的所有记录。而且它也应该不区分大小写。

对于防爆:“翁”搜索应该给我拿约翰的纪录。

回答

2

如果你想往下走,正则表达式路线下面将提取的记录:

/\{"name":"\w*ohn\w*[^\}]+\}/i 

这将匹配每一种:

{"name":"john","age":"22","father-name":"jackson"} 
{"name":"john","age":"22","father-name":"johnson"} 
{"name":"johnny","age":"22","father-name":"smith"} 

但不是:

{"name":"fred","age":"22","father-name":"hall"}, 
{"name":"mike","age":"22","father-name":"johnson"} 
{"name":"bob","age":"22","father-name":"todd"} 
3

虽然你可以存储JSON和使用正则表达式(这在SQLite的相当有限)搜索反对,这并不意味着你应该。

相反,你应该考虑拆分您的JSON到字段并将其存储在正常SQLite的表。这样做不仅可以让您执行更轻松的搜索,而且无需每次痛苦地解析数据,搜索也会更快(如果添加必要的索引)。

+0

+1:不要将数据库视为磁盘驱动器。数据库最适用于存储数据结构,而不是字符串文件。 – slebetman