如何在SQL Server的结果中包含空值的同时使用多个参数进行搜索

布伦特·克莱因

我正在尝试构建一个简单的查询,该查询将允许用户根据人口统计信息过滤客户端列表。在我看来,这LIKE将是最简单的解决方案,例如:

SELECT D.Name
FROM demographics D

WHERE D.City LIKE @cityVar
AND D.Sex LIKE @sexVar
AND D.Age LIKE @ageVar
...

使用组合框将变量传递到查询中。因此,如果用户决定不基于任何给定的参数进行过滤,我将直接传递'%'给变量,从而有效地使WHERE子句中的该行转义

但是,如果我想返回包含已NULL过滤字段中的值的行,则此方法不起作用例如,如果D.Employer的值为NULL,则该客户失业。但传递'%'@employedVar(意味着用户希望同时返回已雇用和待业的客户)将忽略D.Employeris中的所有行NULL

我将如何构造该WHERE子句的逻辑,以解决大量参数的问题,同时仍允许用户对任何给定参数进行转义过滤,并NULL在适当的时候始终包含值?

Quadrell0

最简单的是做这样的事情

SELECT D.Name
FROM demographics D
WHERE (D.City LIKE @cityVar OR @cityVar == '%')
    AND (D.Sex LIKE @sexVar OR @sexVar == '%')
    AND (D.Age LIKE @ageVar OR @ageVar == '%')

重要的是,不要使用类似

SELECT D.Name
FROM demographics D
WHERE ISNULL(D.City. '') LIKE @cityVar
    AND ISNULL(D.Sex, '') LIKE @sexVar
    AND ISNULL(D.Age, '') LIKE @ageVar

将值传递给函数将使其成功,因此SQL Server无法使用这些列上可能具有的任何索引。这将导致效率低下的查询计划和较差的性能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在MongoDB中同时对多个集合进行全文搜索

来自分类Dev

如何在ts文件中对多个值进行角度平移并同时具有参数?

来自分类Dev

如何在MS SQL的两列中搜索多个值

来自分类Dev

如何在SQL中使用多个值进行计算

来自分类Dev

如何在SQL Server表中插入多个值?

来自分类Dev

如何在 SQL Server 变量中存储多个值

来自分类Dev

如何在不声明 SQL Server 类型的情况下使用参数插入多个值?

来自分类Dev

如何使用mongoDB按数组中的多个值进行搜索?

来自分类Dev

如何在SQL Server 2012中使用多个表进行外部交换联接?

来自分类Dev

如何在SQL Server中“使用”架构

来自分类Dev

如何在C#中使用SQL Server中的值

来自分类Dev

如何在SQL中搜索包含冒号的字符串?

来自分类Dev

<>如何在SQL中工作?

来自分类Dev

如何在SQL中减去

来自分类Dev

如何在SQL中实现

来自分类Dev

如何在 SQL 中透视

来自分类Dev

如何在SQL中使用NOT

来自分类Dev

如何在SQL中使用IF

来自分类Dev

如何在SQL中使用IF

来自分类Dev

如何在SQL中同时包含数字和字母数字值的行升序排序?

来自分类Dev

如何在SQL Server中进行汇总?

来自分类Dev

如何在SQL表中搜索短语

来自分类Dev

如何在 SQL 中编写搜索查询

来自分类Dev

如何在sql postgres sql中使用if

来自分类Dev

如何在jsp中显示SQL的结果?

来自分类Dev

如何在不对SQL Server中的所有列进行分组的同时获取MAX()

来自分类Dev

如何在数组中传递多个搜索参数以在PHP中进行搜索

来自分类Dev

如何在包含XML数据的SQL Server的表的列中搜索特定单词

来自分类Dev

如何在 SQL 查询中插入参数?

Related 相关文章

热门标签

归档