LoginSignup
8
9

More than 5 years have passed since last update.

SharePoint CAML Query メモ

Last updated at Posted at 2017-08-06

個人的メモ

よくやるミス

  • タグの大文字小文字を意識する
  • 日付と時刻型は IncludeTimeValue="TRUE" を付けないと時間を比較してくれない
  • Where を使うフィールドにインデックスを作成する

CAML Query の投げ方

JavaScript
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View><Query></Query></View>');

var ctx = new SP.ClientContext.get_current();
var items = ctx.get_web().get_lists().getByTitle('<Your List Name>').getItems(camlQuery);
ctx.load(items);

取得列の指定

列 A , B , C を取得する

<View>
    <ViewFields>
        <FieldRef Name="A"/>
        <FieldRef Name="B"/>
        <FieldRef Name="C"/>
    </ViewFields>
    <Query>
    </Query>
</View>

比較式

列 A は数値列とする

  • A = 0
<View>
    <Query>
        <Where>
            <Eq>
                <FieldRef Name='A' />
                <Value Type="Integer">0</Value>
            </Eq>
        </Where>
    </Query>
</View>
  • A <> 0
<View>
    <Query>
        <Where>
            <Neq>
                <FieldRef Name='A' />
                <Value Type="Integer">0</Value>
            </Neq>
        </Where>
    </Query>
</View>
  • A < 0
<View>
    <Query>
        <Where>
            <Lt>
                <FieldRef Name='A' />
                <Value Type="Integer">0</Value>
            </Lt>
        </Where>
    </Query>
</View>
  • A <= 0
<View>
    <Query>
        <Where>
            <Leq>
                <FieldRef Name='A' />
                <Value Type="Integer">0</Value>
            </Leq>
        </Where>
    </Query>
</View>
  • A > 0
<View>
    <Query>
        <Where>
            <Gt>
                <FieldRef Name='A' />
                <Value Type="Integer">0</Value>
            </Gt>
        </Where>
    </Query>
</View>
  • A>= 0
<View>
    <Query>
        <Where>
            <Geq>
                <FieldRef Name='A' />
                <Value Type="Integer">0</Value>
            </Geq>
        </Where>
    </Query>
</View>

OrderBy の昇順と降順

A 列を降順にするには、Ascending (昇順) を FALSE にする

<View>
    <Query>
        <OrderBy>
            <FieldRef Name='A' Ascending='FALSE' />
        </OrderBy>
    </Query>
</View>

MAX , MIN

列 A の MAX 値を取得するには、降順にして 1 件取ってくる

MIN 値の時は Ascending の値を TRUE にする

<View>
    <ViewFields>
        <FieldRef Name='A' />
    </ViewFields>
    <Query>
        <OrderBy>
            <FieldRef Name='A' Ascending='FALSE' />
        </OrderBy>
    </Query>
    <RowLimit>1</RowLimit>
</View>

Between

AND でつなぐしかない

A 列が日付と時間型と仮定した例

<View>
    <Query>
        <Where>
            <And>
                <Geq>
                    <FieldRef Name='A' />
                    <Value IncludeTimeValue='False' Type='DateTime'>2017-07-01</Value>
                </Geq>
                <Leq>
                    <FieldRef Name='A' />
                    <Value IncludeTimeValue='False' Type='DateTime'>2017-07-31</Value>
                </Leq>
            </And>
        </Where>
    </Query>
</View>
8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9