2

以下は動作しませんが、このようなものが私が探しているものです。

select *
from Products
where Description like (@SearchedDescription + %)

SSRSは、パラメーターの前にある@演算子を使用して「in」をシミュレートしますが、文字列を文字列のリストに一致させる方法が見つかりません。

4

5 に答える 5

4

パラメータで LIKE 演算子を使用する方法には、いくつかのオプションがあります。

オプション1

パラメータ値に % を追加すると、LIKE フィルタの処理方法をカスタマイズできます。たとえば、クエリは次のようになります。

 SELECT name
 FROM master.dbo.sysobjects
 WHERE name LIKE @ReportParameter1

データ セットで LIKE ステートメントを適切に使用するには、sysa% などのパラメーター値を使用できます。このコードを使用して SSRS 2008 でサンプル レポートをテストしたところ、次の 4 つのテーブルが返されました。

 sysallocunits
 sysaudacts
 sysasymkeys
 sysaltfiles

オプション 2

ユーザーが「%」記号を追加する必要のないこれを行う別の方法は、コードを持つ変数を生成し、変数を実行することです。

 DECLARE @DynamicSQL NVARCHAR(MAX) 

 SET @DynamicSQL = 
 'SELECT  name, id, xtype
 FROM dbo.sysobjects
 WHERE name LIKE ''' + @ReportParameter1 + '%''
 '

 EXEC (@DynamicSQL)

これにより、LIKE ステートメントの使用方法を細かく制御できます。ユーザーに追加の演算子を挿入させたくない場合は、最終的なクエリにマージする前に、英数字以外の文字を取り除くコードをいつでも追加できます。

オプション 3

この機能を制御するストアド プロシージャを作成できます。私は通常、SSRS のデータ ソースとしてストアド プロシージャを使用することを好み、動的に生成された SQL を決して許可しませんが、それは単なる私の好みです。これにより、依存関係分析チェックを実行する際の発見可能性が向上し、最適なクエリ パフォーマンスを確保することもできます。

オプション 4

SQL コードを動的に生成するのに役立つ .NET コード アセンブリを作成します。これはやり過ぎで、せいぜい悪い選択だと思いますが、うまくいく可能性があります。

于 2008-11-17T20:35:22.963 に答える
0

あなたはやろうとしましたか:

select * from Products where Description like (@SearchedDescription + '%') (% 記号を一重引用符で囲みますか?)

于 2008-11-10T19:54:09.953 に答える
0

このように置きます:

select * 
from tsStudent 
where studentName like @SName+'%'
于 2009-11-06T09:11:49.013 に答える
0

田野さん、どのバージョンの SSRS を使用していますか? RS2000だとマルチパラメータリストは公式にサポートされていませんが、回避策があります....

于 2009-05-13T16:40:40.933 に答える