[英]how to use INSTR function to data present in column with data type as CLOB
我有一個表(table_clob)具有以下字段
create table table_clob ( file_data CLOB);
上表只有一行。 file_data具有以下數據:
"A00",399,"yhnj",20150302,055522,100215
"E51",987456111,147852,10000,"bnncnf","abc","I","XYZ","EA","PO16", Z99,3
"E51",985856111,147852,10000,"wertt","tgb","I","XYZ","EA","PO16","7GZ",29
"E51",456987123,"469555",155000,"reeggdd","edc","D","ABC","EM","GU16","7HF" 52
"E51",456456852,125500,468566,"wsxcde","BUS","I","ABC","SE","MT12","8JG",18
"E51",987456111,147852,10000,"pokmhj","BUS","I","XYZ","EA","PO16","7GZ",
我已經將上述數據插入到表中(包括列名和類型)。 我不想插入以'AOO'和'Z99'開頭的行; 插入表格后,它應該有6行,看起來應該像這樣:
"E51",987456111,147852,10000,"bnncnf","abc","I","XYZ","EA","PO16", "E51",985856111,147852,10000,"ABC Power Station","BUS","I","XYZ","EA","PO16","7GZ",29 "E51",985856111,147852,10000,"wertt","tgb","I","XYZ","EA","PO16","7GZ",29
"E51",456987123,"469555",155000,"reeggdd","edc","D","ABC","EM","GU16","7HF",52
"E51",456456852,125500,468566,"wsxcde","yhn","I","ABC","SE","MT12","8JG",18
"E51",987456111,147852,10000,"pokmhj","tgb","I","XYZ","EA","PO16","7GZ",
誰能幫助我取得超越結果
您可以使用dbms_log.instr打包函數來執行此操作,請檢查以下內容:
select file_data from table_clob
where dbms_lob.instr(file_data,'AOO')=0
or dbms_lob.instr(file_data,'Z99')=0 ;
此查詢將clob分為幾行:
select
substr(file_data, instr(file_data, '"E51"', 1, level),
decode(instr(file_data, '"E51"', 1, level + 1), 0, length(file_data),
instr(file_data, '"E51"', 1, level + 1) - instr(file_data, '"E51"', 1, level)-1)
) data
from table_clob
connect by instr(file_data, '"E51"', 1, level) > 0
輸出:
DATA
--------------------------------------------------------------------------------
"E51",987456111,147852,10000,"bnncnf","abc","I","XYZ","EA","PO16", Z99,3
"E51",985856111,147852,10000,"wertt","tgb","I","XYZ","EA","PO16","7GZ",29
"E51",456987123,"469555",155000,"reeggdd","edc","D","ABC","EM","GU16","7HF",52
"E51",456456852,125500,468566,"wsxcde","BUS","I","ABC","SE","MT12","8JG",18
"E51",987456111,147852,10000,"pokmhj","BUS","I","XYZ","EA","PO16","7GZ"
消除不必要的行,例如where data not like 'Z99'
並插入到表中,如下所示:
insert into table_clob (file_data)
select data from
(select
substr(file_data, instr(file_data, '"E51"', 1, level),
decode(instr(file_data, '"E51"', 1, level + 1), 0, length(file_data),
instr(file_data, '"E51"', 1, level + 1) - instr(file_data, '"E51"', 1, level)-1)
) data
from table_clob
connect by instr(file_data, '"E51"', 1, level) > 0)
where data not like 'Z99'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.