sql 使用where筛选时,字段空时,不做筛选,非空时筛选

2023-12-18 11:58

本文主要是介绍sql 使用where筛选时,字段空时,不做筛选,非空时筛选,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

需求说明:

1.查询“Name=赵” 且“Tel=180xxxxxxxx” 且“Address=西安预立数据科技有限责任公司“ 且“Email=155154xxx@qq.com”
2.当Name或Tel或Address或Email为空时不做筛选


方法一:

  这种方法可以达到目的,但是sql语句不易扩展和维护,不推荐使用 

  SELECT TOP 1000 [Id],[Name],[Tel],[Address],[Email]FROM [hlltest].[dbo].[User]WHERE (name = @name AND  Tel IS NULL AND Address IS NULL AND Email IS NULL)OR (name IS NULL  AND  Tel = @Tel AND Address IS NULL AND Email IS NULL)OR (name IS NULL  AND  Tel IS NULL AND Address = @Address AND Email IS NULL)OR (name IS NULL  AND  Tel IS NULL AND Address IS NULL AND Email = @Email)OR (name = @name  AND  Tel = @Tel AND Address IS NULL AND Email IS NULL)OR (name = @name  AND  Tel IS NULL AND Address = @Address AND Email IS NULL)---还有很多种组合条件.....

方法二:

  --推荐使用isnull 

DECLARE @name NVARCHAR(50) = '赵',@Tel NVARCHAR(50) = '180xxxxxxxx',@Address NVARCHAR(50) = '西安预立数据科技有限责任公司',@Email NVARCHAR(50) = '155154xxx@qq.com'SELECT TOP 1000 [Id],[Name],[Tel],[Address],[Email]FROM [hlltest].[dbo].[User]WHERE ISNULL(name,@name) = @nameAND ISNULL(Tel,@Tel) = @TelAND ISNULL(Address,@Address) = @AddressAND ISNULL(Email,@Email) = @Email


当Name,Tel,Address,Email存放是字符串空时,Isnull就不能使用, 可以使用case when 或 LEN 判断


方法一:

  --使用case when  

 DECLARE @name NVARCHAR(50) = '赵',@Tel NVARCHAR(50) = '180xxxxxxxx',@Address NVARCHAR(50) = '西安预立数据科技有限责任公司',@Email NVARCHAR(50) = '155154xxx@qq.com'SELECT TOP 1000 [Id],[Name],[Tel],[Address],[Email]FROM [hlltest].[dbo].[User]WHERE (1 = (CASE WHEN Name = ''  THEN 1 ELSE 0 END) OR  Name = @name )AND (1 = (CASE WHEN Tel = ''  THEN 1 ELSE 0 END) OR  Tel = @Tel )AND (1 = (CASE WHEN Address = ''  THEN 1 ELSE 0 END) OR  Address = @Address )AND (1 = (CASE WHEN Email = ''  THEN 1 ELSE 0 END) OR  Email = @Email )


方法二:

--使用LEN  

DECLARE @name NVARCHAR(50) = '赵',@Tel NVARCHAR(50) = '180xxxxxxxx',@Address NVARCHAR(50) = '西安预立数据科技有限责任公司',@Email NVARCHAR(50) = '155154xxx@qq.com'SELECT TOP 1000 [Id],[Name],[Tel],[Address],[Email]FROM [hlltest].[dbo].[User]WHERE (LEN(Name) = 0 OR  Name = @name )AND (LEN(Tel) = 0 OR  Tel = @Tel )AND (LEN(Address) = 0 OR  Address = @Address )AND (LEN(Email) = 0 OR  Email = @Email )

欢迎加群,日用儿童母婴分享大牌淘宝京东优惠券     

   

 

这篇关于sql 使用where筛选时,字段空时,不做筛选,非空时筛选的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/508291

相关文章

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

MySQL中删除重复数据SQL的三种写法

《MySQL中删除重复数据SQL的三种写法》:本文主要介绍MySQL中删除重复数据SQL的三种写法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录方法一:使用 left join + 子查询删除重复数据(推荐)方法二:创建临时表(需分多步执行,逻辑清晰,但会

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

Jsoncpp的安装与使用方式

《Jsoncpp的安装与使用方式》JsonCpp是一个用于解析和生成JSON数据的C++库,它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式,安装JsonCpp可以通过... 目录安装jsoncppJsoncpp的使用Value类构造函数检测保存的数据类型提取数据对json数

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —