我尝试使用临时变量从表中检索数据。 temp变量返回正确的数据但是当试图在Query中使用它时,它没有返回正确的数据集。 我已经尝试在查询中使用硬编码的临时值检索数据,它工作正常。谁能帮助我在这里找到问题。?
以下是我试过的代码
Declare @tempwordFinal varchar(50)
select @tempwordFinal = ''''+'%'+'The Big Bang'+'%'+''''
select @tempwordFinal --here the output is - '%The Big Bang%'
SELECT * from MasterProgram where ProgramTitle like @tempwordFinal --not working
SELECT * from MasterProgram where ProgramTitle like '%The Big Bang%' -- working
答案 0 :(得分:1)
因为xcopy "C:\Users\MyComputer\Desktop\Excel.xlsx" "C:\Users\MyComputer\Desktop\test location"
变量在开头和结尾都有单引号。因此,它希望@tempwordFinal
列中的数据在开头和结尾都有单引号。除了通配符之外,变量中存在的任何内容都将被视为数据,这就是它失败的原因。
ProgramTitle
试试这种方式
select @tempwordFinal --here the output is - '%The Big Bang%'
^ ^
当您使用Declare @tempwordFinal varchar(50)
select @tempwordFinal = '%The Big Bang%'
select 1 where 'The Big Bang' like @tempwordFinal
数据类型的变量时,我们不需要单引号。只有在对字符串常量进行硬编码时才需要单引号
答案 1 :(得分:0)
问题出在你的(逃脱的)额外撇号上。像这样''''
。除非您在数据库中查找明确包含撇号的单词,否则您不需要这些。更正后的代码如下所示:
Declare @tempwordFinal As Varchar(50);
Set @tempwordFinal = '%The Big Bang%';
Select @tempwordFinal; -- %The Big Bang%
SELECT * from MasterProgram where ProgramTitle like @tempwordFinal;