使用具有动态值的多个参数进行搜索

本文关键字:参数 搜索 动态 | 更新日期: 2023-09-27 18:31:07

我正在使用 4 个参数进行搜索,没有必填字段参数是

  1. 城市
  2. 婚姻状况

根据选择,我收到这样的SQL查询

select * from UserTable 
where Gender='Male' AND City='' AND MaritalStatus='Single' AND Groups =''

它返回 0 行,因为参数City='' AND Groups =''与条件不匹配。

有没有办法在不检查多个组合中的 null 的情况下实现这一点。我正在使用MSSQL2012作为我的数据库和Asp.Net C#

我的方法如下

private void GetSearchResults(string city, string MaritalStatus, string Gender, string Groups)
{
    var qry="select * from UserTable 
    where Gender='"+Gender+"' AND City='"+city+"' AND MaritalStatus='"+MaritalStatus+"' AND Groups ='"+Groups+"'";
}

我的选择组='' 意味着我不想对组进行任何过滤

使用具有动态值的多个参数进行搜索

select * from UserTable where Gender='Male' AND City IS NULL AND MaritalStatus='Single' AND Groups IS NULL

假设你有以下参数

@Gender = 'Male',
@City = '',
@MaritalStatus = 'Married'
@Groups = ''

你的 SQL 看起来像。

select * from UserTable 
where 
(Gender = @Gender OR ISNULL (@Gender, '') = '')
AND (City = @City OR ISNULL (@City, '') = '')
AND (MaritalStatus = @MaritalStatus OR ISNULL (@MaritalStatus, '') = '')
AND (Groups = @Groups OR ISNULL (@Groups, '') = '')