IsMatch

EssbaseのMDX IsMatch関数は、ワイルドカード検索またはパターン照合を実行して、文字列が指定されたパターンに一致するかどうかを確認します。入力文字列は、メンバー名、別名、属性値、または関連する任意の文字列にできます。この関数は、指定したパターンに一致する文字列を検索し、見つかったアーティファクトを返します。

構文

IsMatch(string, patternstring, {MATCH_CASE | IGNORE_CASE})

パラメータ

string

パターンに対してテストする必要がある文字列。

patternstring

検索するパターン。POSIX拡張正規表現構文である必要があります。The Open Groupの構文仕様を参照してください。

特殊文字に関する追加の規則については、このトピックの「ノート」を参照してください。

MATCH_CASE

オプション。patternstringの大文字と小文字を区別するとみなします。MATCH_CASEまたはIGNORE_CASEを省略した場合、Essbaseは、デフォルトでアウトライン・プロパティの大文字と小文字を区別する設定になります。

IGNORE_CASE

オプション。patternstringの大文字と小文字を区別するとみなしません。MATCH_CASEまたはIGNORE_CASEを省略した場合、Essbaseは、デフォルトでアウトライン・プロパティの大文字と小文字を区別する設定になります。

ノート

  • $を含むメンバー名を検索するには、patternstring内でこの文字の前に3つの円記号エスケープ文字を付加する必要があります。たとえば、Market内でa$bcを検索するには、IsMatch(Market.CurrentMember.MEMBER_NAME, "a\\\$bc")を使用する必要があります。

  • 行末の文字を検索するには、patternstring内で、POSIX行末アンカーであるドル記号の前に、円記号エスケープ文字を1つ付加する必要があります。たとえば、Market内で末尾がcのメンバー名を検索するには、IsMatch(Market.CurrentMember.MEMBER_NAME, "c\$")を使用する必要があります。

  • $以外の特殊文字を検索するには、patternstring内で、その文字の前に2つの円記号(\)エスケープ文字を付加する必要があります。たとえば、Market内でメンバーa?bcを検索するには、IsMatch(Market.CurrentMember.MEMBER_NAME, "a\\?bc")を使用する必要があります。

次の問合せは、名前が"new"で始まるメンバーを検索します:


SELECT
  Filter(Market.Levels(0).Members, 
   IsMatch(Market.CurrentMember.MEMBER_NAME, "^new")
  )
ON COLUMNS
FROM  Sample.Basic

次の問合せは、名前が少なくとも"n"で始まるメンバーを検索します:


SELECT
  Filter(Market.Levels(0).Members,
   ISMATCH(Market.CurrentMember.MEMBER_NAME, "^n+")
  ) 
ON COLUMNS
FROM  Sample.Basic

次の問合せは、名前に*が含まれるメンバーを検索します:


SELECT
  Filter(Year.Members,
   ISMATCH(Year.CurrentMember.MEMBER_NAME, "\\*")
  ) 
ON COLUMNS
FROM  Sample.Basic

次の問合せは、名前にゼロまたは1つのaが含まれるメンバーを検索します:


SELECT
  Filter(Year.Members,
   ISMATCH(Year.CurrentMember.MEMBER_NAME, "a?")
  ) 
ON COLUMNS
FROM  Sample.Basic