简单的例子:表中有name,age,sex  想做一个多条件的模糊查询,查询3个字段中的任意一个,或多个条件,可以显示匹配的内容
比如name中有“张”字 则把含有“张”字的全部显示出,再或者:name中有“张”和age=20 则把该条件匹配的内容显示出来,跪求达人

解决方案 »

  1.   

    动态拼接where的条件!即可!这个在网页页面的查询中,经常用到!
      

  2.   

    究竟选哪几个字段为条件,得是你自己通过某个参数控制的吧?
    到底是以name为条件,还是name和age都要做为条件呢?
      

  3.   

    举个例,我JSP页面上 有3个选项,分别为name,age,sex 我想任意填一个,或者多个,然后点击按钮查询匹配该条数据的结果  
      

  4.   

    age 在数据库中是什么类型的?
      

  5.   

    其实在后台可以做个if判断句,但实在代码量太大,现在我只有3个字段,就要多达百行的代码量,日后如果多条件,我代码要写死了,而且维护也不甚理想,所以想问下 有没有简单点的SQL模糊查询语句呢
      

  6.   

          
    string name,int age,string sex
      

  7.   

    为什么只有3个字段就要多达百行呢?只能通过是否被选中的FLAG来拼条件串了,不过,可以定义一个初始值,然后在此基础上拼串,能简单些:
    sql_where varchar2(1024) := 'where 1=1 and ';以后每选中一个条件,在此基础上拼一下就行了。
      

  8.   

    --传入值 xselect * from tb_name
    where instr(name,to_char(x))>0
    or to_char(age)=to_char(x) or instr(sex,to_char(x))>0
      

  9.   

    ....我sql不怎么好所以做的是傻瓜式的, 判断如果name为空执行哪条SQL,如果age为空 执行哪条SQL 类似这样的傻瓜式代码又因为有3个条件,所以是要分多个条件判断的。。所以代码量很大,日后如果我要再增加条。维护起来就更麻烦了所以想咨询下达人,有没有我需要的那种SQL语句。。如果有 可以直接写出来嘛谢谢了
      

  10.   

    使用nvl判断
    SELECT NVL ((select AA from TABLE where a=1),(NVL ((select BB from TABLE where a=1),(select CC from TABLE where a=1) ))) FROM DUAL
      

  11.   

    tb_name为你的那个表
    输入值为 str_name, int_age,str_sex
    name,age,sex
    1)都为空时应该不显示任何数据吧 那就什么都不做!
    2)下面是只要有一个不为空的情况
    select * from tb_name tb where tb.name like decode(str_name,'','%%','%str_name%') and tb.age like decode(int_age,'','%%',int_age) and tb.sex like decode(str_sex,'','%%',str_sex)
    红字部分的代码,sex和age 的处理是一样的,你如与sex=男 ,和你说的age=20性质一样
      

  12.   

    上面说的第2个处理 也可以用nvl实现
    select * from tb_name tb where tb.name like nvl(str_name,'%str_name%') and tb.age like nvl(int_age,'%%') and tb.sex like nvl(str_sex,'%%')
      

  13.   

    就是用StringBuffer  拼SQL中的where条件吧