给个捷径,把这个表达式作为 sql 语句的一部分提交给数据库,查询有结果说明表达式合法。比如 :
select ( 2+3*4.1 ) as result from dual
result 14.3select ( 2+-+3*4.1 ) as result from dual  
null

解决方案 »

  1.   

    这种方法对表dual有什么要求,我用sql server 测试,表中没有记录则不返回值,表中有几条记录则返回几个计算结果,另外无法判断表达式的正确与否?表达式为(3++*6-9)则不会执行
      

  2.   

    dual
    是oracle数据库里的系统临时表。
      

  3.   

    那sql server 中使用什么表?
      

  4.   

    select ( 2+3*4.1 ),
    result 14.3
    你可以直接这样写,后边什么都不用跟.
      

  5.   

    简单的还可以,如果真的要把所有的表达式都弄通的话,那就得干脆用Java的编译器了。
      

  6.   

    不需要表名,直接select 1*2
    返回2
      

  7.   

    现在面临的问题是如何对非法的表达式进行有效性检验,直接通过sql语句没办法解决?
      

  8.   

    当然,如果你想用这样的办法对非法的表达式找出它哪里非法是不可能的。
    看看这个:
    http://www.csdn.net/expert/topic/999/999158.xml?temp=.6719171