如何使用Like运算符参数化查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用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参数化上述查询的更好方法。

谢谢

答案

问题是你没有为参数指定长度,它们被解析为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%';
...

请明确而不是懒惰。也可以使用分号来终止语句。

以上是关于如何使用Like运算符参数化查询的主要内容,如果未能解决你的问题,请参考以下文章

Sql Server参数化查询之where in和like实现详解

Sql Server参数化查询之where in和like实现详解

Sql Server参数化查询之where in和like实现详解

转载Sql Server参数化查询之where in和like实现详解

VBA ADO 参数化 LIKE 查询

带有 LIKE 和 IN 条件的参数化查询