如何在动态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_CAPTION'),'%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_。然后编译它并重新部署。