- ベストアンサー
カンマ区切りの値を取り出す
あるカラムに以下のデータが入っています。 { "AAA" : [ { "id" : 1, "age" : 100, }, ], "BBB" : { "id" : 2, "age" : 200, } } BBBのageを値を取り出すにはどうすればよろしいでしょうか?
- みんなの回答 (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)
MySQLの関数でという意味ですか? もしそうなら投入の際に別フィールドで持たせた方がよいのでは?