现在做的一个程序会在表单页获取到一段string类型查询用的sql,现在有这么一个问题,某种情况下 让sql文的某个字段无效。比如SELECT name,age FROM stuInfo WHERE name = 'ann' AND age>15; 现在想把name = ' ann' AND 这段字符去掉。各位大大 别想简单了。因为表单上支持多张查询类型。会出现下面的状况。
where ((name <> 'ann') or (name <> 'lii') or (name like '%wang%') or ( name like 'li%')) 
如果该字段在表单上的查询条件不是单一的他的每个小条件会用括号扩起来,而且所有条件会在一个括号里面。
同一个字段的检索条件会在同一个大括号里面。
现在就是要从 where 条件里面把相应字段所有条件都截取掉。各位大大有什么好办法。
想了两天 没有什么好办法。程序是C#的,用C#也没想出来什么好办法。整了两天了~~~求~~~~~~~Oracle截取字符

解决方案 »

  1.   

    这点要清楚查询条件的连接符的优先顺序,首先是分析;将括号、or、and 分割的各个条件提取出来,压入堆栈。后面,你想删哪个就删哪个,删完再将查询条件拼起来再查询。
      

  2.   

    让我想起了好像是去年ITPUB上面的一个帖子,关于如何分析SQL的,楼主可以到ITPUB上找找思路.
      

  3.   

    多写几个字符串变量,按if拼接呗...
    任何功能,只不过是多几个if,多几个循环...
      

  4.   

    这跟sql貌似没什么关系吧,在程序里拼sql的时候做判断一下就可以