这种逻辑是否可以使用CAML查询?

时间:2015-05-07 20:17:51

标签: sharepoint caml spservices

我对CAML Queries很有经验,但这个让我感到困惑。我需要一些帮助来构建查询的逻辑。 我需要的是返回两列中包含两个单词的每条记录。

示例(返回这些):

  • Column1:word1,Column2:word2。 //返回此记录
  • Column1:word2,Column2:word1。 //返回此记录
  • Column1:word2 word1,Column2 :(空)。 //返回此记录
  • Column1 :(空),Column2:word2 word1。 //返回此记录

示例(不要返回这些):

  • Column1 :(空),Column2:word1。 //不要返回此记录
  • Column1:word1,Column2 :(空)。 //不要返回此记录
  • Column1 :(空),Column2:word2。 //不要返回此记录
  • Column1:word2,Column2 :(空)。 //不要返回此记录
  • Column1 :(空),Column2 :(空)。 //不要返回此记录

将逻辑放在sudo-code中:
if((" word1"出现在' Column1' OR" word1"出现在' Column2')和(" word2" ;出现在' Column1' OR" word2"出现在' Column2')中

我尝试了不同的查询变体,但它们没有返回理想的结果。例如,如果word1出现在Column1中,则下面的那个将始终返回记录,即使word2没有出现在任何地方。

<Query>
<Where>
    <Or>
        <Contains>
            <FieldRef Name="Column1"/><Value Type="Text">word1</Value>
        </Contains>
        <And>
            <Contains>
                <FieldRef Name="Column2"/><Value Type="Text">word1</Value>
            </Contains>
            <Or>
                <Contains>
                    <FieldRef Name="Column1"/><Value Type="Text">word2</Value>
                </Contains>
                <Contains>
                    <FieldRef Name="Column2"/><Value Type="Text">word2</Value>
                </Contains>
            </Or>
        </And>
    </Or>
</Where>

P.S。我在使用SPServices的SharePoint 2007中

1 个答案:

答案 0 :(得分:1)

感谢spservices.codeplex.com上的spevilgenius,这对我有用:

<And>
    <Or>
        <Contains>
            <FieldRef Name="Column1"/><Value Type="Text">word1</Value>
        </Contains>
        <Contains>
            <FieldRef Name="Column2"/><Value Type="Text">word1</Value>
        </Contains>
    </Or>
    <Or>
        <Contains>
            <FieldRef Name="Column1"/><Value Type="Text">word2</Value>
        </Contains>
        <Contains>
            <FieldRef Name="Column2"/><Value Type="Text">word2</Value>
        </Contains>
    </Or>
</And>

链接讨论: https://spservices.codeplex.com/discussions/637384