0

以下のクエリでいくつかのデータを取得しようとしていますが、これをパラメータ化したいと思います。

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)

SQLServer2008r2を使用して上記のクエリをパラメータ化するためのより良い方法を提案してください。

ありがとう

4

1 に答える 1

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%';
...

怠惰ではなく明示してください。また、セミコロンを使用してステートメントを終了します。

于 2013-03-20T14:16:25.027 に答える