SQL多条件查询

原创 2007年10月01日 01:55:00

学习笔记:.net/  2007-10-01

在SQL里进行多条件查询----

       参阅http://topic.csdn.net/t/20060630/17/4853528.htmlhttp://blog.csdn.net/ajqc/archive/2004/08/13/73125.aspx

总结出正确的书写格式:  

格式一:
   
  学习笔记:.net/  2007-10-01

在SQL里进行多条件查询----

       参阅http://topic.csdn.net/t/20060630/17/4853528.htmlhttp://blog.csdn.net/ajqc/archive/2004/08/13/73125.aspx

总结出正确的书写格式:  

格式一:
   
  ALTER   PROCEDURE   [dbo].[ap_intranetDHCPGetByIPAddressNameMacSel]  
  (  
      @IPAddress   nvarchar   (255)     ,  
      @Name   nvarchar   (255)   ,    
      @Mac   nvarchar   (255)    
  )  
  AS  
  SELECT  
      dhcpID,  
      [IPAddress],  
      [Name],  
      [Description],  
      [Mac],  
      [Switch],  
      [Port],  
      [AdminSvc],  
      [InternalSvc],  
      [ExternalSvc]  
  FROM  
      intranetdhcp  
  WHERE  
      (  
            ([IPAddress]   like   '%'+   @IPAddress   +   '%')   or  
            (@IPAddress='')  
      )   and  
      ([Name]like   '%'+@Name+'%'   or   @Name='')   and  
      ([Mac]   like   '%'+@Mac+'%'   or   @Mac='')  
  order   by  
      [IPAddress]

格式二

例如有一个表A的结构如下

ID              int                                  编号

name         varchar(10)                      名字

sex            bit                                  性别

假如要构建一个存储过程,查询这个表,要这表的其中0个到3个满足这特定条件的话,我们可以这样设计:

ALTER PROCEDURE dbo.NewSelectCommand
(
@ID int,
@name nvarchar(18),
@sex bit
)
AS
SET NOCOUNT ON;
SELECT ID, name, sex FROM A where (id=@ID or @ID is null) and (name=@name or @name is null) and (sex=@sex or @sex is null)

 

''与null的意义是不同的:    null表示没有输入,''表示输入了值为''   所以用null更容易理解,并且除字符型字段外其它为空的字段必须转换   null应该在调用时用DBNull.Value传给参数,而不是在sp中加:  
  if   @IPAddress   =   ''   set   @IPAddress   =   null  
   
  另外Isnull()还是有漏洞的,也无法达到模糊查询。但IPAddress,Name,   Mac之类感觉上并不需要用到模糊查询。但是,对于int型,''显然会报错


格式二

例如有一个表A的结构如下

ID              int                                  编号

name         varchar(10)                      名字

sex            bit                                  性别

假如要构建一个存储过程,查询这个表,要这表的其中0个到3个满足这特定条件的话,我们可以这样设计:

ALTER PROCEDURE dbo.NewSelectCommand
(
@ID int,
@name nvarchar(18),
@sex bit
)
AS
SET NOCOUNT ON;
SELECT ID, name, sex FROM A where (id=@ID or @ID is null) and (name=@name or @name is null) and (sex=@sex or @sex is null)

 

''与null的意义是不同的:    null表示没有输入,''表示输入了值为''   所以用null更容易理解,并且除字符型字段外其它为空的字段必须转换   null应该在调用时用DBNull.Value传给参数,而不是在sp中加:  
  if   @IPAddress   =   ''   set   @IPAddress   =   null  
   
  另外Isnull()还是有漏洞的,也无法达到模糊查询。但IPAddress,Name,   Mac之类感觉上并不需要用到模糊查询。但是,对于int型,''显然会报错
 

spring jdbc多条件查询(参数化传参,防止sql注入风险)

public List getAllOperator(int toPage, int pageSize, String login, String name, String...

三层模式中,多条件查询中的sql语句拼接

private void btnSelect_Click(object sender, EventArgs e) { //多条件查询 /...
  • mmmv390
  • mmmv390
  • 2014年05月15日 17:18
  • 1184

数据库学习--sql多条件查询case when then

CASE     WHEN 条件1THEN 结果1     WHEN 条件2THEN 结果2     WHEN 条件3THEN 结果3     WHEN 条件4THEN 结果4 .........

多条件查询SQL语句

http://blog.csdn.net/xmasangel/archive/2007/12/05/1917743.aspx

关于java多条件查询SQL语句拼接的小技巧

关于java多条件查询SQL语句拼接的小技巧最近在实验室做项目的时候遇到了java的多条件查询,翻看了论坛上其他大牛们的博客,都没有给出一个详细的解答。自我探索了一会后给出了下面这样的使用技巧,还算方...

sql大数据多条件查询索引优化

此优化的前提可以称之为最近流行的头条人物“许三多”,总数据多,查询条件多,返回列多 优化前分页查询内部select列为需要的全部列,优化后内部select只返回ID主键,外部查询关联原数据表,然后查出...

SQL——处理页面多条件查询

以前处理多条件查询,主要是两种方法,第一种是在条件里面判断要填入条件的字段,然后判断传入参数是否为空,如果为空,就用1=1替代这个条件;第二种方法,先判断传入参数是否为空,如果不为空,将条件拼接到一个...

Sql多条件查询,子查询,in及分页查询

多条件搜索时where 1=1 并不高效,如果使用这种方法,在数据库中会做全表查询(对每行数据都进行扫描,比对),会无法使用索引等优化查询的策略,建立的索引会暂时失效.Case函数用法1无论方法1,2...
  • xbc1213
  • xbc1213
  • 2015年11月29日 12:29
  • 718

MyBatis中动态SQL语句完成多条件查询

一看这标题,我都感觉到是mybatis在动态SQL语句中的多条件查询是多么的强大,不仅让我们用SQL语句完成了对数据库的操作;还通过一些条件选择语句让我们SQL的多条件、动态查询更加容易、简洁、直观。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL多条件查询
举报原因:
原因补充:

(最多只允许输入30个字)