如何从Clob列获取特定的字符串?
我有以下数据,存储在名为clob的列中 product_details
product_details
CALCULATION=[N]NEW.PRODUCT_NO=[T9856] OLD.PRODUCT_NO=[T9852].... -- with other text
我想NEW.PRODUCT_NO从列中搜索字符串product_details
NEW.PRODUCT_NO
我已经尝试过
select * from my_table where dbms_lob.instr(product_details,'NEW.PRODUCT_NO')>=1
上面从我的表中获取全文。
任何帮助都是非常明显的。
问候
就像常规InStr和SubstStr函数一样,使用dbms_lob.instr和dbms_lob.substr。 看一个简单的例子:
SQL> create table t_clob( 2 id number, 3 cl clob 4 ); Tabela zosta鈹俛 utworzona. SQL> insert into t_clob values ( 1, ' xxxx abcd xyz qwerty 354657 [] ' ); 1 wiersz zosta鈹� utworzony. SQL> declare 2 i number; 3 begin 4 for i in 1..400 loop 5 update t_clob set cl = cl || ' xxxx abcd xyz qwerty 354657 [] '; 6 end loop; 7 update t_clob set cl = cl || ' CALCULATION=[N]NEW.PRODUCT_NO=[T9856] OLD.PRODUCT_NO=[T9852].... -- with other text '; 8 for i in 1..400 loop 9 update t_clob set cl = cl || ' xxxx abcd xyz qwerty 354657 [] '; 10 end loop; 11 end; 12 / Procedura PL/SQL zosta鈹俛 zako藵czona pomy钮lnie. SQL> commit; Zatwierdzanie zosta鈹俹 uko藵czone. SQL> select length( cl ) from t_clob; LENGTH(CL) ---------- 25717 SQL> select dbms_lob.instr( cl, 'NEW.PRODUCT_NO=[' ) from t_clob; DBMS_LOB.INSTR(CL,'NEW.PRODUCT_NO=[') ------------------------------------- 12849 SQL> select dbms_lob.substr( cl, 5,dbms_lob.instr( cl, 'NEW.PRODUCT_NO=[' ) + length( 'NEW.PRODUCT_NO=[') ) new_product 2 from t_clob; NEW_PRODUCT -------------------------------------------------------------------------------- T9856