如何在CLOB列中找到两个字符串?

时间:2014-08-26 19:44:05

标签: sql db2

我尝试过很多查询......只有一个字,我甚至无法做到。

它是一个使用com.ibm.db2.jcc.DB2Driver的DB2数据库 这给我带来了信息:

select *
from JL_ENR
where id_ws = '002'
and dc_dy_bsn = '2014-08-25'
and ai_trn = 2331

JL_TPE列是CLOB列,我想在该搜索结果中找到两个字符串(并且dc_dy_bsn ='2014-08-25'     和ai_trn = 2331)。

首先我尝试了一个:

select 
   dbms_lob.substr(clob_column,dbms_lob_instr(JL_TPE,'CEMENTO'),1)
from 
   JL_ENR 
where 
   dbms_lob.instr(JL_TPE,'CEMENTO')>0; 

没有工作

SELECT * FROM JL_ENR WHERE dbms_lob.instr(JL_TPE,'CEMENTO')>0
and ai_trn = 2331
and dc_dy_bsn = '2014-08-25'

没有工作

Select *
From JL_ENR
Where NOT 
DBMS_LOB.INSTR(JL_TPE, 'CEMENTO', 1, 1) = 0;

没有工作

有人可以解释一下如何找到两个字符串吗? 或者是教程链接,其中解释了如何使其工作......

感谢。

2 个答案:

答案 0 :(得分:1)

您能提供一些样本数据和您正在使用的版本吗?您的示例应该有效(在v10.5.0.1上测试):

db2 "create table test ( x int, y clob(1M) )"
db2 "insert into test (x,y) values (1,cast('The string to find is CEMENTO, how do we do that?')"
db2 "insert into test (x,y) values (2,cast('The string to find is CEMENT, how do we do that?' as clob))"

db2 "select x, DBMS_LOB.INSTR(y, 'CEMENTO', 1) from test where DBMS_LOB.INSTR(y, 'CEMENTO', 1) > 0"

X           2          
----------- -----------
          1          23

  1 record(s) selected.

答案 1 :(得分:0)

我必须在where子句中搜索特定值。我使用了TEXTBLOB LIKE'%Search value%',并且有效!这是针对CLOB(536870912)列中的db2的。

〜基南

相关问题