如何根据传递的两个参数过滤获取结果?

蝙蝠翼

我有一个下拉列表,其中包含所有客户名称作为复选框。用户可以选中该框以选择多个客户。我还有一个文本框,用户可以在其中输入客户名称。如果用户从下拉列表中选择客户 A、B、C 并且没有在文本框中输入任何内容,则结果应显示 A、B、C。如果用户从下拉列表中选择 A、B、C 并在文本框中输入 A,则该语句应检查是否在下拉列表中也选择了 A,结果应仅为 A。这是我的 SQL 语句。目前,如果我选择 A、B、C 并输入 A,它仍然给我 A、B、C。如果我选择 A,B,C 并输入 A,如何更改它,它应该只给我 A。@CLIST 以逗号作为分隔符保存 A,B,C。@CNAME 持有用户键入的 A。

SELECT DISTINCT A.ID, A.NAME, A.DID  
INTO #TMPTBL
FROM MY_LIST A (NOLOCK) 
WHERE  (@CLIST = '' AND (@CNAME='' OR  (A.ID + A.NAME) like '%'+@CNAME+'%'))
OR (A.ID in (SELECT ListItem FROM GetSplitList(',',@CLIST)))
查理脸

您的逻辑有缺陷,对于您需要检查的每个参数 @param = '' OR @param is-match

SELECT DISTINCT
    A.ID, A.NAME, A.DID  
INTO #TMPTBL
FROM MY_LIST A
WHERE (
    @CNAME = '' OR
    A.ID + A.NAME LIKE '%' + @CNAME + '%'
) AND (
    @CLIST = '' OR
    A.ID IN (SELECT ListItem FROM GetSplitList(',',@CLIST))
);

旁注:
不要用 乱写你的代码NOLOCK,这不是一个更快的开关
考虑使用表值参数而不是逗号分隔的列表

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据 lambda 函数的两个参数过滤列表而不对参数进行硬编码?

AngularJS:使用从输入中获取的两个参数过滤结果

如何在nsFetchRequest中创建根据不同实体的两个参数过滤的compoundpredicate

如何在MySQL中使用两个标签参数过滤结果?

根据传递的参数过滤json数据

如何使用两个参数过滤数组?

如何传递两个参数并在php中获得过滤后的结果?

JavaScript按两个参数过滤

使用两个参数过滤所有列表

MFC:CBitmapCreateCompatibleBitmap()根据传递给它的两个兼容CDC给出不同的结果?

如何使用 dapper 映射/连接两个表并按参数过滤

如何将两个参数作为数据传递给 AJAX?

根据参数过滤

如何根据url参数过滤数组

我尝试根据传递给函数的两个参数将字符串缩短两个字符。怎么样?

Spring Webflux:如何比较两个 Mono 流的结果并根据过滤器保存

如何根据两个不同列中的两个参数搜索和过滤Google表格

两个JavaScript参数如何传递“ this”

如何通过两个字符串参数过滤字典?

如何在过滤器Angular JS中传递两个参数?

根据两个键获取elasticsearch结果

AngularJS如何根据指定参数过滤JSON数据

Laravel - 如何根据参数过滤 hasMany 关系?

如何根据两个值过滤arraylist

根据传递的参数从树中获取选定的对象

如何使用junit将两个二维参数数组中的数据传递给硒rc中的type()函数

如何在AsyncTask中传递两个参数?

如何将两个参数传递给webpack?

如何从两个不同的函数传递参数