Handy CAML Query Snippets

Getting Checked out Files

<Where>
  <IsNotNull>
    <FieldRef Name='CheckoutUser' />
  </IsNotNull>
</Where>

or

<Where>
  <Eq>
    <FieldRef Name='_Level' />
    <Value Type='Integer'>255</Value>
  </Eq>
</Where>

Getting Published Files

<Where>
  <Eq>
    <FieldRef Name='_Level' />
    <Value Type='Integer'>1</Value>
  </Eq>
</Where>

Getting Checked-in Files

<Where>
  <Eq>
    <FieldRef Name='_Level' />
    <Value Type='Integer'>2</Value>
  </Eq>
</Where>

Getting Files Only (i.e. excluding Folders)

<Where>
  <Eq>
    <FieldRef Name='FSObjType' />
    <Value Type='Integer'>0</Value>
  </Eq>
</Where>

Getting Folders Only (including Document Sets)

<Where>
  <Eq>
    <FieldRef Name='FSObjType' />
    <Value Type='Integer'>1</Value>
  </Eq>
</Where>

Comparing URLs

<Where>
  <Eq>
    <FieldRef Name='WorkflowLink' />
    <Value Type='URL'>/subsite/listname/item-url.docx</Value>
  </Eq>
</Where>

Note that you must use a server relative URL when querying against a URL field.


Querying Content Type ID

<Where>
  <Eq>
    <FieldRef Name='ContentTypeId' />
    <Value Type='ContentTypeId'>0x0120D52000058D5968BC2445489FC509B9E038862900A88F92769A306640872EDF8D34E64427</Value>
  </Eq>
</Where>

Querying Current User

<Where>
  <Eq>
    <FieldRef Name="UserField"></FieldRef>
    <Value Type="User"><UserID /></Value>
  </Eq>
</Where>

or

<Where>
  <Eq>
    <FieldRef Name="UserField"></FieldRef>
    <Value Type="Integer"><UserID /></Value>
  </Eq>
</Where>

Querying User Based on ID

<Where>
  <Eq>
    <FieldRef Name="UserField" LookupId="TRUE"></FieldRef>
    <Value Type="User">11</Value>
  </Eq>
</Where>

or

<Where>
  <Eq>
    <FieldRef Name="UserField" LookupId="TRUE"></FieldRef>
    <Value Type="Integer">11</Value>
  </Eq>
</Where>