2013-08-21 52 views
5

SQL我喜歡搜索欄使用這樣的特定字符串的匹配:MDX相當於LIKE

SELECT t.attributeNAME 
FROM myTable t 
WHERE t.attributeNAME LIKE '%searchString%' 

我可能想使用一個臨時表,然後使用該結果在隨後的像這樣一個較長的腳本片段:

--find the keys 
SELECT t.attributeKEY 
INTO #Temp 
FROM myTable t 
WHERE t.attributeNAMELIKE '%searchString%' 

--use the keys 
SELECT SUM(f.measure) 
FROM myFacts f 
    INNER JOIN #Temp t ON 
    f.attributeKEY = t.attributeKEY 

--use the keys again 
SELECT SUM(F.measure) 
FROM myOtherFacts F 
    INNER JOIN #Temp t ON 
    F.attributeKEY = t.attributeKEY 

是否有一個相當於這MDX?如果我有一個想法,我可以以某種方式使用searchString過濾到一組特定項目的層次結構中的項目?


編輯

正如馬克·波利齊指出,回答好像instr是在這種情況下非常有用,我可以做到以下幾點:

CREATE SET [xCube].[Set_Names] AS 
    {FILTER(
    [xDimension].[xHierarchy].[xLevel].Members, 
    (InStr(1, [xDimension].[xHierarchy].CurrentMember.NAME, "WIL") <> 0) 
     ) 
     } 

GO 

SELECT 
    NON EMPTY 
      [Set_Names] 
    ON ROWS, 
    NON EMPTY 
      [Measures].[x] 
    ON COLUMNS 
FROM [xCube] 

GO 

SELECT 
    NON EMPTY 
      [Set_Names] 
    ON ROWS, 
    NON EMPTY 
      [Measures].[y] 
    ON COLUMNS 
FROM [xCube] 

GO 

SELECT 
    NON EMPTY 
      [Set_Names] 
    ON ROWS, 
    NON EMPTY 
      [Measures].[z] 
    ON COLUMNS 
FROM [xCube] 

回答

2

您也許能夠即使它不支持通配符,也可以使用Instr函數。

+0

+1行 - 讓我玩,並添加試圖將OP馬克。 – whytheq

+0

- 最近添加了這個其他MDX問題Marc:[SO問題](http://stackoverflow.com/questions/18375416/test-if-a-set-exists-before-trying-to-drop-it?noredirect=1 #comment27019375_18375416) – whytheq

+0

@whytheq:檢查問題 - 不知道是否有可能。 –