SharePoint常用CAML查询语法及举例

SharePoint常用Caml查询语法及举例
1.CAML语法简介
2.Caml查询语法常见运算符
3.应用举例
参考
1.CAML语法简介
CAML简称协作应用程序标记语言,基于XML,用来定义SharePoint网站和列表中栏和视图,可以用于定义数据、呈现数据并在编程中实现。本文只对查询模块进行汇总说明。

2.Caml查询语法常见运算符
写在query标签中用于指定条件进行查询,注意区分大小写。

运算符 说明 功能
And 且 条件拼接 ,并且
Or 或 条件拼接 ,或者
Where 位置筛选器 在查询上下文中用来指定位置的筛选器
FieldRef 引用栏目声明 表示对查询中的字段的引用
Value 值 声明条件的值将与 FieldRef 元素返回的值进行比较
Now 当前日期和时间 返回当前日期和时间
Today 当前日期 返回当前日期
Eq 等于 条件声明 ,返回等于XXX的项
Gt 大于 条件声明 ,比较运算符大于
Lt 小于 条件声明 ,比较运算符小于
Geq 大于等于 条件声明,比较运算符大于等于
Leq 小于等于 条件声明,比较运算符小于等于
Neq 不等于 条件声明,比较运算符不等于
IsNull 为空 条件声明,返回为空 (Null) 的项
IsNotNull 非空 条件声明,返回为非空 (Null) 的项
BeginsWith 以某字符串开始 条件声明,返回以XXX开头的项
Contains 包含 条件声明,返回含有XXX的项
GroupBy 分组 条件声明,对查询返回的数据进行分组
OrderBy 排序 条件声明,对查询返回的数据进行排序
3.应用举例
以下根据查询常见的运算符进行举例说明:
1>And
查询LastName为Bagel且FirstName为Jean(两个条件)的所有项

<Query>
<Where>
<And>
<Eq><FieldRef Name="LastName" />
<Value Type="Text">Bagel</Value>
</Eq>
<Eq><FieldRef Name="FirstName" />
<Value Type="Text">Jean</Value>
</Eq>
</And>
</Where>
</Query>
1
2
3
4
5
6
7
8
9
10
11
12
2>Or
查询LastName为Bagel或FirstName为Jean或EnName为James(三个条件)的所有项

<Query>
<Where>
<Or>
<Or>
<Eq><FieldRef Name="LastName" />
<Value Type="Text">Bagel</Value>
</Eq>
<Eq><FieldRef Name="FirstName" />
<Value Type="Text">Jean</Value>
</Eq>
</Or>
<Eq><FieldRef Name="EnName" />
<Value Type="Text">James</Value>
</Eq>
</Or>
</Where>
</Query>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
3>Where
参考1>和2>

4>FieldRef
参考1>和2>

5>Value
参考1>和2>
Type后接数据类型,常见有:Integer整型,Text字段类型,DateTime时间类型

6>Now
查询UpdateTime为当前时间的所有项

<Query>
<Where>
<FieldRef Name="UpdateTime" />
<Value Type="DateTime">
<Now />
</Value>
</Where>
</Query>
1
2
3
4
5
6
7
8
7>Today
查询LeaveDate为当前日期的所有项

<Query>
<Where>
<FieldRef Name="LeaveDate" />
<Value Type="DateTime">
<Today />
</Value>
</Where>
</Query>
1
2
3
4
5
6
7
8
8>Eq
参考1>和2>

9>Gt
查询ID大于3的所有项

<Query>
<Where>
<Gt><FieldRef Name="ID" />
<Value Type="Integer">3</Value>
</Gt>
</Where>
</Query>
1
2
3
4
5
6
7
10>Lt
查询ID小于3的所有项

<Query>
<Where>
<Lt><FieldRef Name="ID" />
<Value Type="Integer">3</Value>
</Lt>
</Where>
</Query>
1
2
3
4
5
6
7
11>Geq
查询ID大于等于3的所有项

<Query>
<Where>
<Geq><FieldRef Name="ID" />
<Value Type="Integer">3</Value>
</Geq>
</Where>
</Query>
1
2
3
4
5
6
7
12>Leq
查询ID小于等于3的所有项

<Query>
<Where>
<Leq><FieldRef Name="ID" />
<Value Type="Integer">3</Value>
</Leq>
</Where>
</Query>
1
2
3
4
5
6
7
13>Neq
查询ID不等于3的所有项

<Query>
<Where>
<Neq><FieldRef Name="ID" />
<Value Type="Integer">3</Value>
</Neq>
</Where>
</Query>
1
2
3
4
5
6
7
14>IsNull
查询ID为空(Null)的所有项

<Query>
<Where>
<IsNull>
<FieldRef Name="ID" />
</IsNull>
</Where>
</Query>
1
2
3
4
5
6
7
15>IsNotNull
查询ID不为空(Null)的所有项

<Query>
<Where>
<IsNotNull>
<FieldRef Name="ID" />
</IsNotNull>
</Where>
</Query>
1
2
3
4
5
6
7
16>BeginsWith
返回一个Journal列以 “City” 开头为标题的所有项

<Query>
<Where>
<BeginsWith>
<FieldRef Name="Journal" />
<Value Type="Note">City</Value>
</BeginsWith>
</Where>
</Query>
1
2
3
4
5
6
7
8
17>Contains
返回一个Journal列包含 “City” 字符为标题的所有项

<Query>
<Where>
<Contains>
<FieldRef Name="Journal" />
<Value Type="Note">City</Value>
</Contains>
</Where>
</Query>
1
2
3
4
5
6
7
8
18>GroupBy
查询非空CompanyName并分组(理解为合并相同项)显示所有不同的项标题
关于GroupBy的用法参照SQL中的用法,更多信息推荐浏览关于group by的用法原理

<Query>
<Where>
<IsNotNull>
<FieldRef Name="CompanyName" />
</IsNotNull>
</Where>
<GroupBy>
<FieldRef Name="CompanyName" />
</GroupBy>
</Query>
1
2
3
4
5
6
7
8
9
10
19>OrderBy
查询 DeadLine为空或大于等于当前日期的所有项并按ID升序返回(Ascending升序为TRUE,降序为FALSE)

<Query>
<Where>
<Or>
<IsNull>
<FieldRef Name="DeadLine" />
</IsNull>
<Geq>
<FieldRef Name="DeadLine" />
<Value Type="DateTime">
<Today />
</Value>
</Geq>
</Or>
</Where>
<OrderBy>
<FieldRef Name="ID" Ascending="TRUE" />
</OrderBy>
</Query>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
参考
以上为个人整理总结的知识,如有遗漏或错误欢迎留言指出、点评,如要引用,请联系通知,未经允许谢绝转载。
[1]: https://docs.microsoft.com/zh-cn/sharepoint/dev/schema/query-schema
————————————————
版权声明:本文为CSDN博主「Penn Li」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44903147/article/details/89520362

posted @ 2021-03-15 10:00  心冰之海  阅读(341)  评论(0编辑  收藏  举报