在windows窗体C#中形成的动态mdx查询中转义百分比字符(%)



如何在动态MDX中转义"%"字符。我希望"%"在MDX中被视为文字,而不是通配符。以下是正在发生的事情的基本想法:我有一个windows窗体(使用c#),用户可以在其中为MDX查询创建一个动态搜索表达式。例如。货币包含美国

其中"Currency"是静态的,条件"Contains"是下拉选择值,然后是"US"的文本框。

所以用户点击"搜索",就形成了一个动态MDX,并出现了一个立方体命中。

现在,当查询像时,我没有得到正确的结果

计算包含50%

在这里,%被视为外卡,并且显示任何包含"50"的内容。请帮忙。我试过引号"、方括号[]、反斜杠\、双字符%%。但没有运气。

更新:这实际上是用户的前端含义,在后端我使用分析存储过程,"IsLike"来实现这一点。查询是这样的:{WITH MEMBER[Measures]。[Search]AS IIF([ASP].[IsLike]([Calculation].[Calculation].CurrentMember.Properties('MEMBER_CAP‌​‌​TION'),'%50%%')}

感谢

如果我正确理解您的问题,那么您正在使用ASSP(分析存储过程)IsLike方法,并想知道如何在like模板中转义%,以便按字面意思搜索它。查看源代码(http://asstoredprocedures.codeplex.com/SourceControl/latest#ASSP/StringFilters.cs,方法LikeToRegEx),我看不到实现这一点的简单方法。在这种方法中,百分比被无条件地替换为".*"。您可以下载ASSP源代码并更改此方法以允许转义百分比,例如使用"[%]",它将在SQL Server关系引擎like中工作。例如,你可以在之后添加

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

另一条线路

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

这将恢复CCD_ 6与CCD_。然后编译它并重新部署。

最新更新