• ベストアンサー

カンマ区切りの値を取り出す

あるカラムに以下のデータが入っています。 { "AAA" : [ { "id" : 1, "age" : 100, }, ], "BBB" : { "id" : 2, "age" : 200, } } BBBのageを値を取り出すにはどうすればよろしいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.2

substring(項目A, locate('\"age\" : ',項目A, locate('],\r\n"BBB" :\r\n{\r\nCol1,',項目A)+length('],\r\n"BBB" :\r\n{\r\nCol1,')-1))+8, locate(',',項目A, locate('\"age\" : ',項目A, locate('],\r\n"BBB" :\r\n{\r\nCol1,',項目A)+length('],\r\n"BBB" :\r\n{\r\nCol1,')-1))+8 ) - locate('],\r\n"BBB" :\r\n{\r\nCol1,',項目A)+length('],\r\n"BBB" :\r\n{\r\nCol1,')-1))+8 ) という感じですか。(マニュアル見ただけ。未検証。) ・・・はっきり言って、訳が分らないselect文になるのでお薦めじゃないです。 \r\nは、\rだけかも。 要は改行のときに入る文字のエスケープシーケンス。 "BBB" : { "id" : 2, "age" : , } は"age"未入力と言った仕様があるなら未対応。 (さらに輪をかけてややこしくすればできるとは思いますが。)

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

MySQLの関数でという意味ですか? もしそうなら投入の際に別フィールドで持たせた方がよいのでは?

関連するQ&A