2010-07-15 167 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函數。

相關問題