在用sql语句进行多条件模糊查询的时候,只要有一个条件符合,就从库中把所有相关的数据取出来
比如说有三个查询条件,姓名,学号,地址。在通过这三个条件查询时,如果输入框中输入姓名为“张”,学号为“1”,地址为空,点击查询,应该将数据库中所有满足模糊条件:姓名中有“三”,学号中有”1“的都搜索出来,而不是将同时满足模糊条件:姓名中有“三”,学号中有”1“的记录搜出来。请问各位大虾这代码怎么写?

解决方案 »

  1.   

    like      or     ...
      

  2.   

    name like '%三%' or number like '%1%'
      

  3.   

    有“三”或者有“1”就查出来
    select * from table where 姓名 like '%三%' or 学好 like '%1%'
    姓名有“三”,同时学号有“1”
    select * from table where 姓名 like '%三%' and 学好 like '%1%'
      

  4.   

    select 姓名 like '%张%' or 学好 like '%1%'
      

  5.   

    用存储过程,开头省了begin
    set   nocount   on
    declare   @s   nvarchar(4000)
    select   @s='Select * from table where 1=1'
    +case   when   @Name>''   then   '   and   Name like @Name'   else   ''   end  
    +case   when   @id>''   then   '   and   id like @id'   else   ''   end  
    +case   when   @address>''   then   '   and   address like @address'   else   ''   end exec   sp_executesql   @s,   
      N'@Name   varchar(50)=null,    
      @id   varchar(50)=null, 
      @address varchar(50)  
      '
      ,@Name,@id,@address
    end
      

  6.   

    关键是现在我有一个条件地址是空啊,查询的时候会将全部数据取出来
    还有就是查询的组合太多,我不可能为每个组合写个sql语句吧
      

  7.   

    有“三”或者有“1”就查出来 
    select * from table where 姓名 like '%三%' or 学好 like '%1%' 
    姓名有“三”,同时学号有“1” 
    select * from table where 姓名 like '%三%' and 学好 like '%1%'
      

  8.   

    Select * from 表 where (姓名 like '%三%' or 姓名=null) and ( 学號 like '%1%' or 学號=null) and (地址 like '%三%' or 地址=null)
      

  9.   

    select * from table where 姓名 like '%三%' or 学号 like '%1%' or 地址 like '%%'
    这个地址是空的,查的时候去将库中全部数据取出来的  
      

  10.   

    希望下面这个能帮得上你的一些忙:
    http://download.csdn.net/source/408631
      

  11.   

    1.做存储过程在存储过程中实现动态SQL,做SQL拼接这个上面已经有了.
    2.在程序端做SQL拼接一下.
    根据查询条件,                        string strName,strNo,strAddr;
                            string strSqlWhere;
                            if  (!string.IsNullOrEmpty(strName))  strSqlWhere = strSqlWhere + " NAME LIKE " + strName.ToString().Trim();
                            if (!string.IsNullOrEmpty(strNo))
                            {
                                if (string.IsNullOrEmpty(strSqlWhere)) strSqlWhere = strSqlWhere + " NO LIKE " + strNo.ToString().Trim();
                                else strSqlWhere = strSqlWhere + " OR NO LIKE " + strNo.ToString().Trim();
                            }                        if (!string.IsNullOrEmpty(strAddr))
                            {
                                if (string.IsNullOrEmpty(strSqlWhere)) strSqlWhere = strSqlWhere + " ADDR LIKE " + strAddr.ToString().Trim();
                                else strSqlWhere = strSqlWhere + " OR ADDR LIKE " + strAddr.ToString().Trim();
                            }                        if (!string.IsNullOrEmpty(strSqlWhere)) strSqlWhere = " WHERE " + strSqlWhere;