SELECT *
    FROM run_mal_record,run_mal_cause  WHERE run_mal_cause.malacc_cause like '%' || run_mal_record.mal_cause  || '%' ......

解决方案 »

  1.   

    SELECT *
        FROM run_mal_record,run_mal_cause  
        WHERE run_mal_cause.malacc_cause like '%' and run_mal_record.mal_cause like '%'  and ......
      

  2.   

    那么您能保证以后采用别的数据库后台后不改变前台的程序吗?
    ‘||’或许又要变成别的符号了
    您说的方法我以前用了,但是只能是在oracle中
      

  3.   

    可以这样做:
    SELECT *
        FROM run_mal_record,run_mal_cause  WHERE CHARINDEX(run_mal_record.mal_cause ,run_mal_cause.malacc_cause)>0但不知道oracle中是否有CHARINDEX函数?
      

  4.   

    你好象把run_mal_cause.malacc_cause和run_mal_record.mal_cause写反了。
    改为:
    select *
        FROM run_mal_record,run_mal_cause  WHERE run_mal_record.mal_cause like '%' + run_mal_cause.malacc_cause  + '%' 我想知道一点,你为什么要这样设计数据库呢?
    既然run_mal_record.mal_cause是用run_mal_cause.malacc_cause表中字段组合出来的,你不如加一个表专门指定这两个表的一对多的对应关系。这样就好做查询了。而且用文字来组合,又不好维护,可能还会有长度限制,没什么好处。比如run_mal_cause中
    使用不合理,超负荷,违章操作,保养维护不善,操作不良,安装问题,原制造问题,原设计问题
    分别对应代码1,2,3,4,5,6,7,8run_mal_record记录有:
    1001 使用不合理/超负荷/违章操作/保养维护不善/操作不良/安装问题
    1002 原制造问题/原设计问题 新加的表中记录就是这样的:
    frecordid fcauseid
    1001 1
    1001 2
    1001 3
    1001 4 
    1001 5
    1001 6
    1002 7 
    1002 8查询就好写了。