如有这样的字符串'9>=7',如何返回它的正确值。
即如果正确就返回1,错误就返回0。

解决方案 »

  1.   

     select (case when 9>7 then 1 else 0 end) from dual;
      

  2.   


    select case when to_number(substr(a,instr(a,'''',1),instr(a,'>')-instr(a,'''',1)-1))-
           to_number(substr(a,instr(a,'>')+1,length(a)-instr(a,'>')))>0 then 'T' else 'F' END
    from 
    (
           select '9>7' a from dual
     )--result:
    T
    把上面写成一函数!
      

  3.   

    楼上辛苦了
    我是想找个函数。类似js中eval方法。
    不过还是感谢你先!
      

  4.   

    可以写在存储过程里,动态拼sql语句,最后execute
      

  5.   

    to yuxinglian:
    这样的sql怎么写? 
    能否举例下?
      

  6.   

    记得回过一个几乎一模一样的问题,可是找不到那个帖子了
    写个函数
    create or replace function fun(condition in varchar2)return number
    as
    v_result number;
    sqlstr varchar2(1000):='select case when ';
    begin
    sqlstr:=sqlstr||condition||' then 1 else 0 end flag from dual';
    execute immediate sqlstr into v_result;
    return v_result;
    end fun;
    然后试试select fun('0>1') from dual;
      

  7.   

    create or replace procedure m
    (   a  in varchar2,  --开始日期
        outdate    out varchar2
    )is
    begin
    select 
    case when to_number(substr(a,instr(a,'''',1),instr(a,'>')-instr(a,'''',1)-1))-
           to_number(substr(a,instr(a,'>')+1,length(a)-instr(a,'>')))>0 then 'T' else 'F' END into outdate
           from dual ;end m;
      

  8.   

    create or replace procedure m
    (   a  in varchar2,  
        outdate    out varchar2

    )is
    begin
    select 
    case when to_number(substr(a,instr(a,'''',1),instr(a,'>')-instr(a,'''',1)-1))-
           to_number(substr(a,instr(a,'>')+1,length(a)-instr(a,'>')))>0 then 'T' else 'F' END into outdate
           from dual ;end m;