小弟要写一个SQL,目的在于将一张表里的CLOB对象与多张表取出联合值进行比较(结果集中的一列)
如果相同则从结果集中将这一记录删除。
如果不同则保留。
SELECT PART.Part_id,Part.Class_id,Part.CN_XH,Part.PART_AREA_ID,ParPart.PART_AREA_ID as zizubie,
PParPart.PART_AREA_ID as zubie from Part join Part ParPart on Part.PART_AREA_ID = ParPart.Part_ID
join Part PParPart on ParPart.PART_AREA_ID = PParPart.Part_ID
JOIN Rout on dbms_lob.instr(Rout.CN_SITE,
'%'||ParPart.PART_AREA_ID||'*'||PART.PART_AREA_ID||'*'||Part.CN_XH||'*'||PART.Part_id||'%',1,1)>0 SQL中Rout.CN_SITE是ROUT表中的clob对象,其存储格式为 % 值1 * 值2 * 值3 * 值4 % 。
这SQL中有两个问题。
第一,CLOB值好像比较不出来。
第二,现在是保留的相同的,目的是要保留ROUT表里没有的记录。
      请高手帮忙~~~~~

解决方案 »

  1.   

    to_char(Rout.CN_SITE) --这样试试
    不能拿clob类型与字符型进行比较的scott@YPCOST> create table te(v_name clob);表已创建。scott@YPCOST> insert into te values('% 值1 * 值2 * 值3 * 值4 %');已创建 1 行。scott@YPCOST> commit;提交完成。scott@YPCOST> select * from te where v_name='% 值1 * 值2 * 值3 * 值4 %';
    select * from te where v_name='% 值1 * 值2 * 值3 * 值4 %'
                           *
    第 1 行出现错误:
    ORA-00932: 数据类型不一致: 应为 -, 但却获得 CLOB
    scott@YPCOST> select * from te where to_char(v_name)='% 值1 * 值2 * 值3 * 值4 %';V_NAME
    --------------------------------------------------------------------------------
    % 值1 * 值2 * 值3 * 值4 %