繁体   English   中英

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

[英]Escape percentage character (%) in a dynamic mdx query formed in windows forms C#

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

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

因此,用户单击“搜索”,就会在上述条件下形成动态MDX,并且发生多维数据集命中。

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

计算包含 50%

此处,%被视为通配符,并且显示任何包含“ 50”的内容。 请帮忙。 我尝试使用引号“”,方括号[],反斜杠\\,双字符%%。 但没有运气。

更新:它实际上是对用户的前端含义,在后端我为此使用Analysis Stored Procedures,“ IsLike”。 查询是这样的:{WITH MEMBER [Measures]。[Search] AS IIF([ASSP]。[IsLike]([Calculation]。[Calculation] .CurrentMember.Properties('MEMBER_CAP‌ÂTION'),'% 50 %%')}

谢谢

如果我正确理解了您的问题,那么您正在使用ASSP(分析存储过程)IsLike方法,并且想知道如何在相似模板中转义% ,以便从字面上搜索它。 看一下源代码( http://asstoredprocedures.codeplex.com/SourceControl/latest#ASSP/StringFilters.cs ,方法LikeToRegEx ),我看不到实现此目的的简便方法。 在此方法中,百分比无条件地由".*"代替。 您可以做的是下载ASSP源代码并更改此方法,以允许转义百分比,例如,使用"[%]"可以在SQL Server关系引擎( like 例如 您可以在

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

另一条线

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

这将恢复[%]过度用[.*]代替。 然后,您将对此进行编译并重新部署。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM