类似有一个字段 service_item ,里面存放的内容大致如下
{"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、获取code
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、合并前三个sql
select * 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中对应的数字和匹配项即可。
感谢魁哥