2012-11-16 163 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