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不拼接条件查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SQL Server 2005 数据库转 SQL Server 2000的方法小结
这篇文章主要介绍了SQL Server 2005 数据库转 SQL Server 2000的方法,需要的朋友可以参考下2014-04-04
SQLServer中bigint转int带符号时报错问题解决方法
用一个函数来解决SQLServer中bigint转int带符号时报错问题,经测试可用,有类似问题的朋友可以参考下2014-09-09
解决无法在unicode和非unicode字符串数据类型之间转换的方法详解
本篇文章是对无法在unicode和非unicode字符串数据类型之间转换的解决方法进行了详细的分析介绍,需要的朋友参考下2013-06-06
SQL Server 2008R2安装详细图文教程(附安装包)
这篇文章详细介绍了如何安装SQL Server,包括下载安装包、安装步骤和注意事项,文中通过图文介绍的非常详细,需要的朋友可以参考下2024-12-12


最新评论