0

我将一个人对象作为 JSON 存储在我的 SQLite 数据库中。该表将有几条 1000 条人员对象记录。我需要的是根据“名称”属性查询人员。

经过调查,我发现使用 SQLite 的 GLOB 方法在 JSON 元素中执行 RegEx 类型的搜索。

我的示例 JSON 是这样的。

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

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

例如:“ohn”搜索应该获取我约翰的记录。

4

2 回答 2

3

虽然您可以存储 JSON 并使用正则表达式(在 SQLite 中相当有限)对其进行搜索,但这并不意味着您应该这样做。

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

于 2012-11-16T09:09:59.043 回答
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"}
于 2012-11-16T09:18:04.600 回答