ストーリーショート:私はMySQL 5.6を使用しています(現時点では、新しいバージョンに更新することはできません)保存されています。データベースに保存されているMySQL 5.6を使用してJSONオブジェクトのプロパティを検索します。
サンプルJSONオブジェクト:
-- Row #1 (`options` column)
{"name": "Test", "description": "Some description", "type": "post", "scheduled": true, "deleted": false, "timestamp": "1482263883"}
-- Row #2 (`options` column)
{"name": "", "description": "Some description test", "type": "post", "scheduled": true, "deleted": false, "timestamp": "1482263883"}
問題:私は私のJSONオブジェクトに格納されているname
財産に対する記録を検索することができるようにしたい。
SELECT * FROM `my_table` WHERE ((`options` LIKE '%"name":"%Test%"%'))
上記のクエリは正常に動作し、時にはそれは、偽陽性を返すことができる(それはdescription
プロパティの「テスト」の文字列が含まれているように、例えば2行目も同様に返されます)。
いくつかの注意事項:
options
列に格納されたオブジェクトが正確に行ごとに同じであり、例えばname
プロパティは各レコードの最初の位置にあります。
さて、現在の実装で、それは不可能です。あなたは名前の中でのみ検索するために最新のものを持っている必要があります。 –
第二行は、説明フィールドで 'test'を持っているので、それはまたtest''の 'NAME'を有するので、それは戻り戻りません。もちろん、両方の行に同じ値が返されます。 –
あなたは何を検索したいのですか?最初の行と2番目の行は '' name ":" Test "'を持つように、例のように一致する必要があります。 –