现在正在编一个程序。需要用到析取范式 conjunctive normal form
找不到它规律。
是用来分析sql语句中  where 后面的复杂条件  'AND' 和 'OR',
例如  
select * from R where  A   AND  B OR C AND D OR E .......
涉及到,如何把where后面条件变成析取范式,就是形式如    .....  OR ......  OR ...... OR .... OR..... 有具体什么规律可以找吗?就是找不到规律。谢谢各位达人!

解决方案 »

  1.   

    and 优先级高于 or ,()优先级最大
      

  2.   

    例如
    A or B and C and D or E and F or G or H如何变成为这样子形式
    (... ) or (...)  or (....)   or ( .... )or( ....)这个形式就是所谓的 disjunctive normal form 
      

  3.   

    楼主貌似想做个数据库啊,SQL语义分析没那么容易的。
    光考虑and or ()就够头痛的了,要是来几个子查询
    楼主看看网上有没有SQL语义分析之类的资料参考下,不过估计都是绝密
      

  4.   


    顶啊,有了这些关系之后还得继续分析啊,比如某个式子是((A or B )and C and ((D or E )and F or G) or H),怎么样化为析取范式?忘高人指点,哪怕是纯粹的思路,都万分感激!