日期:2014-05-17  浏览次数:20481 次

SQL查询字段为变量的语句
SELECT ID, area
FROM Area
WHERE (@condition LIKE '%' + @keyword + '%')
这里查询没有报错,但是搜索结果为空(变量都输入正确了)。如果把@condition换成area,那就能正常搜出结果。
貌似存储过程里这么用没有问题,但单个SQL语句没有预期结果,不知道当如何修改了。
------解决方案--------------------
这样就有记录:

declare @condition varchar(100)
declare @keyword varchar(100)


set @condition = 'abcd'
set @keyword = 'cd'

SELECT *
from area
WHERE (@condition LIKE '%' + @keyword + '%')

------解决方案--------------------
会不会是类型转换的问题?
------解决方案--------------------
引用:
Quote: 引用:

我是在visual studio 2010中执行这样的语句的,执行的时候会弹出窗口让填变量的值。

不过照你上面的复制粘贴进去,结果还是为空。



我的意思是,
set @condition = 'abcd'
set @keyword = 'cd'
这两句的值我改成了该改的了。


你打开sql profiler,跟踪一下,看看到底执行的语句是怎么样的
------解决方案--------------------
改成这样试试,然后把print换成exec
DECLARE @sql VARCHAR(max)

declare @condition varchar(100)
declare @keyword varchar(100)
 
 
set @condition = 'abcd'
set @keyword = 'cd'
 SET @sql='
SELECT *
from area
WHERE ('+@condition+' LIKE ''%' + @keyword + '%'')'
PRINT @sql