複数のタグなどを入れる場合、JSON型のカラムやデータなどを入れることがあるかと思いますが、ここから検索できるということが昨日わかりましたので、メモしておきます。
SQLServerで発見しましたが、MySQLでもあるようです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
create table sampleJson ( id int identity(1,1), sample_name varchar(50), json_tag nvarchar(max) ); insert into sampleJson (sample_name,json_tag) values( 'tag1', '{"name":"yamadatarou","hobby":"baseball","age":"30" }' ); insert into sampleJson (sample_name,json_tag) values( 'tag2', '{"name":"suzukijirou","hobby":"net","age":"50" }' ); |
その場合、以下のようなデータになります。
1 2 3 |
id sample_name json_tag(ここがJSONが入っているカラム) 1 tag2 {"name":"suzukijirou","hobby":"net","age":"50" } 2 tag1 {"name":"yamadatarou","hobby":"baseball","age":"30" } |
ここからhobbyにnetがあるデータを抽出したい場合以下のSQLで取り出せます。
1 2 3 4 5 6 |
select * from sampleJson where JSON_VALUE(json_tag, '$.hobby') = 'net'; |
参考リンク
SQL ServerでJSON文字列の値の取得・設定を行なう
MySQLでのJSON型
MySQL5.7以上だと可能なJSON型ですが、検索ができるようです。