SQL多条件查询
2007-10-01 01:55
225 查看
学习笔记:.net/ 2007-10-01
在SQL里进行多条件查询----
参阅http://topic.csdn.net/t/20060630/17/4853528.html和 http://blog.csdn.net/ajqc/archive/2004/08/13/73125.aspx
总结出正确的书写格式:
格式一:
学习笔记:.net/ 2007-10-01
在SQL里进行多条件查询----
参阅http://topic.csdn.net/t/20060630/17/4853528.html和 http://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型,''显然会报错
在SQL里进行多条件查询----
参阅http://topic.csdn.net/t/20060630/17/4853528.html和 http://blog.csdn.net/ajqc/archive/2004/08/13/73125.aspx
总结出正确的书写格式:
格式一:
学习笔记:.net/ 2007-10-01
在SQL里进行多条件查询----
参阅http://topic.csdn.net/t/20060630/17/4853528.html和 http://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型,''显然会报错
相关文章推荐
- linq to sql 的动态条件查询方法
- SQL——处理页面多条件查询
- MyBatis中动态SQL语句完成多条件查询
- util-C# 复杂条件查询(sql 复杂条件查询)查询解决方案
- notepad++ pythonScript插件之列转SQL查询条件
- QT SQL 变量 条件查询 插入数据
- sql 查询中日期条件的优化
- 要提高SQL查询效率where语句条件的先后次序应如何写
- [技术点]SQL 多条件查询
- 数据库学习--sql多条件查询case when then
- sql查询调优之where条件排序字段以及limit使用索引的奥秘
- SQLServer 存储过程中不拼接SQL字符串实现多条件查询
- SQL查询_____查询最近30天内正确率大于60%的阅读记录,每天只显示符合条件的速度最高的那个
- 要提高SQL查询效率where语句条件的先后次序应如何写 使你的 SQL 语句完全优化
- SQL自动组装时,1=1查询条件优化方案
- 一个数据库查询方法(可以动态设置查询参数,设置查询条件),很巧妙的组合sql语句
- java SQL条件组合查询拼串DoSqlString.java
- nullnullsql 多条件查询
- SQL 多表条件查询完成 将超出警戒线的机器向相关人员发出告警
- mybatis查询sql中in条件使用(foreach)