sqlは文字列タイプフィールドから値を取ってマッチングします。
1550 ワード
フィールドのようなservice_アイテム、中身は大体以下の通りです。
1、idを取得する
ありがとうございます
{"categoryId":"01","category":" ","name":" ","code":"01","desc":" ","value":"250.00"}
このフィールド内の文字列の中のidとcodeに合わせて、valueを取得したいです。1、idを取得する
select substr(service_item, instr(service_item,'"categoryId":"')+14, 2) categoryId from table;
2、コードを取得するselect substr(service_item, instr(service_item,'"code":"')+8, 2) code from table;
3、idとcodeをマッチングしてからvalueを取得する select substr(substr(service_item, instr(service_item,'"value":"') +9),0,instr(substr(service_item, instr(service_item,'"value":"')+9),'"')-1 )val
from table;
4、合併前の三つのsqlselect * from(
select business_id,
substr(service_item, instr(service_item,'"categoryId":"')+14, 2) categoryId ,
substr(service_item, instr(service_item,'"code":"')+8, 2) codeId ,
substr(substr(service_item, instr(service_item,'"value":"') +9),0,
instr(substr(service_item, instr(service_item,'"value":"')+9),'"')-1 )unloadDays,service_item
from table)
where categoryId='00' and codeId= '01';
実際に格納された文字列の位置とマッチする文字列の違いによって、sqlに対応する数字とマッチする項目を変更すればいいです。ありがとうございます