SharePoint常用CAML查询语法及举例

本文介绍SharePoint中CAML(协作应用程序标记语言)的查询语法,涵盖基本概念、常见运算符及其应用场景,包括条件拼接、值比较、日期操作、字符串匹配等关键功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>

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>

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>

7>Today
查询LeaveDate为当前日期的所有项

<Query>
   <Where>
     <FieldRef Name="LeaveDate" />
       <Value Type="DateTime">
          <Today />
       </Value>
   </Where> 
</Query>

8>Eq
参考1>和2>

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

<Query>
   <Where>
     <Gt><FieldRef Name="ID" />
         <Value Type="Integer">3</Value>
     </Gt>
   </Where> 
</Query>

10>Lt
查询ID小于3的所有项

<Query>
   <Where>
     <Lt><FieldRef Name="ID" />
         <Value Type="Integer">3</Value>
     </Lt>
   </Where> 
</Query>

11>Geq
查询ID大于等于3的所有项

<Query>
   <Where>
     <Geq><FieldRef Name="ID" />
         <Value Type="Integer">3</Value>
     </Geq>
   </Where> 
</Query>

12>Leq
查询ID小于等于3的所有项

<Query>
   <Where>
     <Leq><FieldRef Name="ID" />
         <Value Type="Integer">3</Value>
     </Leq>
   </Where> 
</Query>

13>Neq
查询ID不等于3的所有项

<Query>
   <Where>
     <Neq><FieldRef Name="ID" />
         <Value Type="Integer">3</Value>
     </Neq>
   </Where> 
</Query>

14>IsNull
查询ID为空(Null)的所有项

<Query>
   <Where>
     <IsNull>
        <FieldRef Name="ID" />
     </IsNull>
   </Where> 
</Query>

15>IsNotNull
查询ID不为空(Null)的所有项

<Query>
   <Where>
     <IsNotNull>
        <FieldRef Name="ID" />
     </IsNotNull>
   </Where> 
</Query>

16>BeginsWith
返回一个Journal列以 “City” 开头为标题的所有项

<Query>
   <Where>
     <BeginsWith>
         <FieldRef Name="Journal" />
         <Value Type="Note">City</Value>
     </BeginsWith>
   </Where> 
</Query>

17>Contains
返回一个Journal列包含 “City” 字符为标题的所有项

<Query>
   <Where>
     <Contains>
         <FieldRef Name="Journal" />
         <Value Type="Note">City</Value>
     </Contains>
   </Where> 
</Query>

18>GroupBy
查询非空CompanyName并分组(理解为合并相同项)显示所有不同的项标题
关于GroupBy的用法参照SQL中的用法,更多信息推荐浏览关于group by的用法原理

<Query>
  <Where>
      <IsNotNull>
        <FieldRef Name="CompanyName" />
      </IsNotNull>
  </Where>
  <GroupBy>
    <FieldRef Name="CompanyName" />
  </GroupBy>
</Query>

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]: https://docs.microsoft.com/zh-cn/sharepoint/dev/schema/query-schema

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值