9

SQL我喜欢使用类似这样的内容搜索列以查找特定字符串的匹配项:

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 过滤到一组特定的项目吗?


编辑

正如 Marc Polizzi 的回答所指出的,在这种情况下似乎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]  
4

2 回答 2

5

即使Instr函数不支持通配符,您也可以使用它。

于 2013-08-21T08:13:42.187 回答
2

没有像like普通 MDX 这样的东西,但在 ASSP 项目中有一个实现:http ://asstoredprocedures.codeplex.com/wikipage?title=StringFilters&referringTitle=Home

于 2013-08-21T08:43:52.063 回答