2010-07-15 168 views
1

我在Windows Server 2008 Enterprise上使用SQL Server 2008 Enterprise。在存储过程中,我需要将参数传递给select-where-like语句。例如,如何将参数传递给存储过程

@department是存储过程的输入参数,其类型为varchar(20),

select * from sometable where somecolumn LIKE '%@department%' 

,但似乎我上面的语句不工作,任何想法如何传递参数@department喜欢声明?

由于事先 乔治

回答

8
select * /*But don't use * in production!*/ 
from sometable 
where somecolumn 
LIKE '%' + @department + '%' 
+0

谢谢,问题回答! – George2 2010-07-15 11:58:43

4

您在连接字符串:

select * from sometable where somecolumn LIKE '%' + @department + '%' 
2

这是一个变量,它会引号外面。

select * from sometable where somecol like '%' + @department + '%'

或者,更优选地,%s添加到变量,只是用它直接

2

尝试:

select * from sometable where somecolumn LIKE '%' + @department + '%' 
+0

如果您发布代码或XML,请**在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码”按钮(101 010)以更好地格式化和语法突出显示它! – 2010-07-15 13:23:31

2

你可以做这样的事情:

select * from sometable where somecolumn LIKE '%' + @department + '%' 
+2

不,它不。这不是动态SQL – 2010-07-15 11:50:32

+0

您是正确的先生。这是我在SQL中进行字符串连接时的反应。对于我所看到的一些代码仍然有恶梦。我从答案中删除了陈述。 – Josh 2010-07-16 13:37:12

+0

良好的膝盖混蛋反应! – 2010-07-16 13:43:38

0
select * from sometable 
where CHARINDEX(@department,somecolumn)>0 

您也可以使用CHARINDEX函数。

相关问题