1

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

其中“货币”是静态的,条件“包含”是一个下拉可选值,然后是“美国”的文本框。

因此,用户单击“搜索”并在上述条件下形成动态 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(分析存储过程)IsLike 方法,并且想知道如何%在 like 模板中转义 a 以便从字面上搜索它。查看源代码(http://asstoredprocedures.codeplex.com/SourceControl/latest#ASSP/StringFilters.cs,方法LikeToRegEx),我看不到实现此目的的简单方法。在此方法中,百分比无条件地替换为".*"。您可以做的是下载 ASSP 源代码并更改此方法以允许转义百分比,例如"[%]"在 SQL Server 关系引擎中可以使用的百分比like。例如。你可以在之后添加

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

另一条线

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

which would revert the overly aggressive replace of [%] with [.*]. Then you would compile this and re-deploy.

于 2013-08-13T19:39:39.060 回答