2013-03-20 133 views
0

我想用下面的查詢檢索一些數據,並且我想參數化這個。如何使用Like運算符來查詢參數化查詢

select Col A,Col B,Col C,Col D 
From TableA 
where (COL A like '01%' or COL A like '02%') 

我正在使用下面的查詢,但我沒有得到輸出。

declare @p1 varchar ='01%', 
     @p2 varchar ='02%' 
select Col A,Col B,Col C,Col D 
From TableA 
where (COL A like @p1 or COL A like @p2) 

請提出更好的方法如何使用sql server 2008r2參數化上述查詢。

感謝

回答

4

的問題是,你沒有指定你的參數的長度,他們正在解決的varchar(1)。你可以在調試101中看到這個,例如

DECLARE @p1 VARCHAR = '01%'; 
SELECT p1 = @p1, lenp1 = DATALENGTH(@p1); 

結果:

p1 lenp1 
---- ----- 
0 1 

嘗試:

DECLARE @p1 VARCHAR(32) = '01%', 
     @p2 VARCHAR(32) = '02%'; 
... 

請明確的,而不是懶惰。也使用分號來終止語句。

http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length.aspx

http://sqlblog.com/blogs/aaron_bertrand/archive/2009/09/03/ladies-and-gentlemen-start-your-semi-colons.aspx