首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以为LIKE / NOT LIKE使用参数吗

可以为LIKE / NOT LIKE使用参数吗
EN

Stack Overflow用户
提问于 2012-10-22 06:04:36
回答 1查看 111关注 0票数 0

我尝试传递LIKE / NOT LIKE和%符号的参数,以生成一个动态查询,该查询基于从应用程序传递的内容运行。但是我得到了一个错误,因为TSQL对like/not like的参数感到困惑,因为它不是布尔值。有没有可能这样做,或者我必须编写多个if语句来检查传递了哪些参数。

代码语言:javascript
复制
@fullName varchar(100), @SrchCriteria1 varchar(15), @SrchCriteria2 varchar(15), 
@fullName1 varchar(100), @SrchCriteria3 varchar(15), @SrchCriteria4 varchar(15),
@fullName2 varchar(100), @SrchCriteria5 varchar(15), @SrchCriteria6 varchar(15),
@qualifer varchar(10), @qualifer1 varchar(10), @qualifer2 varchar(10)

SELECT d.*
FROM   defendants_ALL d, #tmpFullname t1, #tmpFullname1 t2, #tmpFullname2 t3
WHERE  d.combined_name + @qualifer + @SrchCriteria1 + t1.Item + @SrchCriteria2
and  d.combined_name + @qualifer + @SrchCriteria3 + t2.Item + @SrchCriteria4
and  d.combined_name + @qualifer + @SrchCriteria5 + t3.Item + @SrchCriteria6

EXEC uspJudgments @qualifier = 'LIKE', @qualifier1 = 'LIKE', @qualifier = 'NOT LIKE', @fullName = 'johns', @fullName1 = 'jim,j.', @SrchCriteria1 = '%', @SrchCriteria2 = '%',  @SrchCriteria3 = '%', @SrchCriteria4 = '%', @fullName2 = 'johnson', @SrchCriteria5 = '%', @SrchCriteria6 = '%'

因此,它应该返回jim johns和J.Johns的所有组合,但不包括jim johnson和j. johnson。我知道这是一种罕见的组合,但我想不出比这更常见的更好的组合了。

动态SQL:

代码语言:javascript
复制
DECLARE @Query NVarChar(1024)
SET @Query = 'SELECT d.* FROM defendants_ALL d, #tmpFullname t1, #tmpFullname1 t2, #tmpFullname2 t3'  +
'WHERE d.combined_name' + @qualifier + @SrchCriteria1 + 't1.Item' + @SrchCriteria2 +
' and d.combined_name' + @qualifier + @SrchCriteria3 + 't2.Item' + @SrchCriteria4 +
' and d.combined_name' + @qualifier + @SrchCriteria5 + 't3.Item' + @SrchCriteria6
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-22 08:32:29

LIKE接受模式的表达式,例如d.combined_name LIKE @SrchCriteria

您正在尝试组合一个动态查询。为此,您需要在字符串中创建整个查询,然后使用EXECUTE

代码语言:javascript
复制
declare @Query as NVarChar(1024) = 'SELECT d.* FROM ...' +
  'WHERE d.combined_name ' + @qualifer + @SrchCriteria1 + t1.Item + @SrchCriteria2 +
  '...'

在将语句传递给EXECUTE之前,可以分几个步骤对语句进行汇编。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13002656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档