我在CAML查询方面经验丰富,但这让我卡住了。我需要一些帮助来构建查询的逻辑。我需要的是返回包含两个列中两个单词的每个记录。
示例(返回以下):
- 列1:Word1,列2:Word2。//返回此记录
- 列1:Word2,列2:Word1。//返回此记录
- 列1:Word2 Word1,列2 :(空)。//返回此记录
- 列1 :(空),列2:Word2 Word1。//返回此记录
示例(不要返回这些):
- 列1 :(空),列2:word1。//请勿返回此记录
- 列1:Word1,列2 :(空)。//请勿返回此记录
- 列1 :(空),列2:word2。//请勿返回此记录
- 列1:Word2,列2 :(空)。//请勿返回此记录
- 列1 :(空),列2 :(空)。//请勿返回此记录
将逻辑放入sudo代码中:
if((" word1"出现在'column1'或" word1"中的'column2''中)和(" word2"出现在'column1'或" word2"中的'column2'中))
我尝试了不同的查询变体,但它们没有返回理想的结果。例如,如果Word1出现在第1列中,即使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
感谢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