我正在尝试使用以下查询检索一些数据,我想参数化。
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建议如何参数化上述查询的更好方法。
谢谢
答案 0 :(得分: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%';
...
请明确而不是懒惰。也可以使用分号来终止语句。