1

動的 MDX で "%" 文字をエスケープする方法を教えてください。MDX で "%" をワイルド カードではなくリテラルとして扱いたい。何が起こっているかの基本的な考え方は次のとおりです。ユーザーが MDX クエリの動的検索式を作成できる Windows フォーム (c# を使用) があります。例: 通貨にはUSが含まれます

ここで、「Currency」は静的で、条件「Contains」はドロップダウンで選択可能な値で、次に「US」のテキストボックスです。

ユーザーが「検索」をクリックすると、上記の条件で動的 MDX が形成され、キューブ ヒットが発生します。

今、クエリが次のような場合、正しい結果が得られません:

計算には50%が含まれます

ここで、% はワイルドカードとして扱われ、「50」を含むものはすべて表示されます。助けてください。引用符 ""、角括弧 []、バックスラッシュ \、二重文字 %% を試しました。しかし運がない。

更新:実際には、ユーザーにとってフロントエンドの意味です。バックエンドでは、これに分析ストアドプロシージャ「IsLike」を使用します。クエリは次のようなものです: { WITH MEMBER [Measures].[Search] AS IIF( [ASSP].[IsLike] ([Calculation].[Calculation].CurrentMember.Properties('MEMBER_CAP‌ ‌ TION'),'% 50%%')}

ありがとう

4

1 に答える 1

1

私があなたの質問を正しく理解していれば、あなたは ASSP (Analysis Stored Procedures) IsLike メソッドを使用して%おり、like テンプレートで a をエスケープして文字どおりに検索する方法を知りたいと考えています。ソース コード ( http://asstoredprocedures.codeplex.com/SourceControl/latest#ASSP/StringFilters.cs、 method LikeToRegEx) を見ると、これを実現する簡単な方法がわかりません。このメソッドでは、パーセントが無条件に に置き換えられ".*"ます。あなたができることは、ASSP ソース コードをダウンロードし、このメソッドを変更して、たとえば"[%]"SQL Server リレーショナル エンジンで動作するパーセントをエスケープできるようにすることlikeです。例)の後に追加できます

sb.Replace("[.]", @"_");

別の行

sb.Replace("[\.]", @"%");

これにより、過度に攻撃的な置換の[%]withが元に戻り[.*]ます。次に、これをコンパイルして再デプロイします。

于 2013-08-13T19:39:39.060 に答える