SQLSERVER不拼接SQL如何实现条件查询
遇到条件查询,比如用户可以在界面上选择想要查询的条件。
我们常用的方法是拼接SQL,如下:
declare @id int, @SQL NVARCHAR(50) = '' set @SQL = 'select * from user where 1=1 ' if @id is not null begin set @SQL = @SQL + ' and id = ' + @id end
但是如果需要查询的参数很多,这样的SQL调试起来相当麻烦,我们甚至需要输出最后拼接的SQL,然后拷贝出来单独调试。
可以使用另外一种方法:
declare @id int, @name NVARCHAR(50) = '' select * from user where (ISNULL(@id,'') = '' or id = @id) and (ISNULL(@name,'') = '' or name = @name)
实现原理:
ISNULL(@id,'') = '' OR id=@id
1.假如用户没有选择参数@id,则满足左边的条件ISNULL(@id,'') = ''
2. 假如用户选择了参数@id,则满足右边的条件id=@id,它们之间是or关系,所以满足任意一个就行,就不需要写IF去一个一个判断了
到此这篇关于SQLSERVER不拼接SQL如何实现条件查询的文章就介绍到这了,更多相关SQL不拼接条件查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
sqlserver中通过osql/ocmd批处理批量执行sql文件的方法
上周在测试环境建了几十张表,保存了.sql文件,准备在正式环境重建的时候懒得一个个打开建了,做一在网上搜寻了一下,果然有简单点的方法。2011-08-08Windows开启SQL Server服务及1433端口详细教程
这篇文章主要给大家介绍了关于Windows开启SQL Server服务及1433端口的相关资料,通常端口值是1433,因为1433是sql server 2000的对于Tcp/IP的默认侦听端口,文中通过图文介绍的非常详细,需要的朋友可以参考下2024-05-05SQL Server误区30日谈 第20天 破坏日志备份链之后,需要一个完整备份来重新开始日志链
事务日志备份会备份自上次事务日志备份以来所有的事务日志(如果从来没有过日志备份的话,那就从上一次完整备份开始)。有好几种类型的操作会中断事务日志的连续性,也就是说除非重新开始新的日志链,SQL Server无法再进行日志备份2013-01-01SQL Server 日期函数CAST 和 CONVERT 以及在业务中的使用介绍
。最近时间刚从客户端转入后台写服务,对于后台数据库以及服务的书写完全是个小白,所以最近写的肯定没有太多技术含量2013-01-01
最新评论