Select DAGUID,DAH,XMMC,AJMC,GDSJ,GDBZ from ZL_ARCHIVES t where (DAH like '%''%' or XMMC like '%''%' or AJMC like '%''%' ) and GDBZ='3' and DELSIGN is null and exists ( select 1 from table_name s where s.column1 = t.DAGUID )
我拿到的数据就是一个DataTable,一个webservice返回的数据,也不能改。。只能利用现有的这9000多条数据的DataTable,还有救么。。 不用改什么就改这个sql啊 and exists ( select 1 from DataTable s where s. DAGUID = t.DAGUID )
你可以先把9000 条DAGUID 合成用逗号隔开的字符串,然后以CLOB的方式传递到DB,在DB用函数把CLOB转成内存表,变成类似如下的函数:Select DAGUID,DAH,XMMC,AJMC,GDSJ,GDBZ from ZL_ARCHIVES t where (DAH like '%''%' or XMMC like '%''%' or AJMC like '%''%' ) and GDBZ='3' and DAGUID in ( select * from table(split (:CLOB)) )其中split函数可以参考https://community.oracle.com/message/4558212,不过那个帖子的输入参数是varchar2.如果你的数据库版本是oracle 11g的话,可以用xmltable函数替代 table(split())
from ZL_ARCHIVES t
where (DAH like '%''%' or XMMC like '%''%' or AJMC like '%''%' )
and GDBZ='3'
and DELSIGN is null
and exists (
select 1 from table_name s where s.column1 = t.DAGUID
)
我拿到的数据就是一个DataTable,一个webservice返回的数据,也不能改。。只能利用现有的这9000多条数据的DataTable,还有救么。。
我拿到的数据就是一个DataTable,一个webservice返回的数据,也不能改。。只能利用现有的这9000多条数据的DataTable,还有救么。。
不用改什么就改这个sql啊
and exists (
select 1 from DataTable s where s. DAGUID = t.DAGUID
)
我先去服务里面取出来符合要求的数据,然后再做查询操作,取出来之后是一个DataTable,是在程序代码里面操作的。。
from ZL_ARCHIVES t
where (DAH like '%''%' or XMMC like '%''%' or AJMC like '%''%' )
and GDBZ='3'
and DAGUID in (
select * from table(split (:CLOB))
)其中split函数可以参考https://community.oracle.com/message/4558212,不过那个帖子的输入参数是varchar2.如果你的数据库版本是oracle 11g的话,可以用xmltable函数替代 table(split())