0

SQLite データベースに person オブジェクトを JSON として保存しています。テーブルには、人物オブジェクトの 1000 件のレコードがいくつか含まれます。私が必要とするのは、「名前」属性に基づいて人を照会することです。

調査の結果、SQLite の GLOB メソッドを使用して、JSON 要素で RegEx のような検索を実行することがわかりました。

私のサンプル JSON は次のようなものです。

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

JSON の name 属性で指定された SubString の一部に一致するすべてのレコードを RegEx マッチャーに取得してもらいたいと考えています。また、大文字と小文字も区別しない必要があります。

例: 「ohn」で検索すると、john のレコードが取得されます。

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 に答える