MDX结合LEFT& INSTR功能

时间:2018-01-29 08:45:39

标签: conditional-statements mdx

这个布尔条件有什么问题?

(
Left(
  [Article].[Main Article Alternative ID CPG].currentmember.Properties('Member_Caption')
  ,(Instr( 
      [Article].[Main Article Alternative ID CPG].currentmember.Properties('Member_Caption')
      , ' ' 
    )-1)
 )='ABC'
)

错误说:-1参数超出有效范围

1 个答案:

答案 0 :(得分:0)

这很好:=Instr("OPRS" + " "," ")因为您要搜索的字符串位于字符串中。

您有以下内容:

LEFT(
  [Article].[Main Article Alternative ID CPG].currentmember.Member_Caption
  ,INSTR( 
        [Article].[Main Article Alternative ID CPG].currentmember.Member_Caption             
      , ' ' 
   )-1
 )='ABC'

如果找不到' ',则INSTR([Article].[Main Article Alternative ID CPG].currentmember.Member_Caption , ' ')会返回0,因此您将拥有LEFT("xxx", -1),因此无效的参数例外。

您可以添加初步检查:

IIF(
  INSTR( 
            [Article].[Main Article Alternative ID CPG].currentmember.Member_Caption             
          , ' ' 
       ) = 0
   ,NULL
   ,LEFT(
      [Article].[Main Article Alternative ID CPG].currentmember.Member_Caption
      ,INSTR( 
            [Article].[Main Article Alternative ID CPG].currentmember.Member_Caption             
          , ' ' 
       )-1
     )='ABC'
)