クエリの書き方

目次

クエリの書き方

条件を絞り込むクエリで利用できる演算子/関数/オプションです。
演算子/関数/オプションは組み合わせて使用できます。

クエリの記述例は次を参照してください。
サンプルクエリ
kintone APIのクエリの書き方の基本

演算子

「フィールドコード 演算子 値」のように記述します。

演算子 説明
= 文字列_0 = "テスト" 演算子の前に指定したフィールドコードの値と演算子の後に指定した値が一致する
!= 文字列_0 != "テスト" 演算子の前に指定したフィールドコードの値と演算子の後に指定した値が異なる
> 数値_0 > 10 演算子の前に指定したフィールドコードの値が、演算子の後に指定した値より大きい
< 数値_0 < 10 演算子の前に指定したフィールドコードの値が、演算子の後に指定した値より小さい
>= 数値_0 >= 10 演算子の前に指定したフィールドコードの値が、演算子の後に指定した値以上である
<= 数値_0 <= 10 演算子の前に指定したフィールドコードの値が、演算子の後に指定された値以下である
in ドロップダウン_0 in ("A", "B") 演算子の前に指定したフィールドコードの値が、演算子の後の括弧内に列挙した文字列のいずれかと一致する
not in ドロップダウン_0 not in ("A", "B") 演算子の前に指定したフィールドコードの値が、演算子の後の括弧内に列挙した文字列と一致しない
like 文字列_0 like "テスト" 演算子の前に指定したフィールドコードの値が、演算子の後に指定した値を含む
判定するフィールドの型が添付ファイルの場合、ファイル名とファイルの内容が判定の対象になります。
like演算子で使用できない記号は、次のページを参照してください。
キーワード入力時の注意事項 (External link)
not like 文字列_0 not like "テスト" 演算子の前に指定したフィールドコードの値が、演算子の後に指定した値を含まない
like演算子で使用できない記号は、次のページを参照してください。 キーワード入力時の注意事項 (External link)
or 数値_0 < 10 or 数値_0 > 20 上述の演算子を使用した2つの条件式の論理和
and 数値_0 >= 10 and 数値_0 <= 20 上述の演算子を使用した2つの条件式の論理積
is 文字列_複数行_0 is empty 演算子の前に指定したフィールドコードの値が、次の条件を満たす
  • 空白文字、改行文字、タブ文字のいずれかのみの文字列
is not 文字列_複数行_0 is not empty 演算子の前に指定したフィールドコードの値が、次の条件を満たさない
  • 空白文字、改行文字、タブ文字のいずれかのみの文字列
補足
  • テーブル内のフィールド、および関連レコードのフィールドをクエリに含める場合、=!=演算子の代わりに、innot in演算子を使ってください。
  • クエリで文字列検索する場合は単語検索です。
    詳細は次のページを参照してください。
    キーワード入力時の注意事項 (External link)

関数

関数名 説明
LOGINUSER() 作成者 in (LOGINUSER()) APIを実行したユーザー
PRIMARY_ORGANIZATION() 組織 in (PRIMARY_ORGANIZATION()) APIを実行したユーザーの優先する組織
APIを実行したユーザーに優先する組織が設定されていない場合、組織 in (PRIMARY_ORGANIZATION())の条件は無視され、
それ以外の絞り込み条件を満たすすべてのレコードが取得されます。
NOW() 作成日時 = NOW() APIを実行した日時
TODAY() 作成日時 = TODAY() APIを実行した日
YESTERDAY() 作成日時 = YESTERDAY() APIを実行した日の前日
TOMORROW() 日時 = TOMORROW() APIを実行した日の翌日
FROM_TODAY(数字, 期間の単位) 作成日時 < FROM_TODAY(5, DAYS) APIを実行した日から起算した期間
期間の単位に指定可能な文字列は次のとおりです。
  • DAYS:日単位
  • WEEKS:週単位
  • MONTHS:月単位
  • YEARS:年単位
THIS_WEEK(曜日) 作成日時 = THIS_WEEK() APIを実行した週
引数に次の値を指定することで、曜日を指定できます。
  • SUNDAY:日曜日
  • MONDAY:月曜日
  • TUESDAY:火曜日
  • WEDNESDAY:水曜日
  • THURSDAY:木曜日
  • FRIDAY:金曜日
  • SATURDAY:土曜日
引数を指定しない場合は、今週のすべての日が対象です。
LAST_WEEK(曜日) 作成日時 = LAST_WEEK() APIを実行した週の前週
引数にTHIS_WEEK()と同じ値を指定することで、曜日を指定できます。
引数を指定しない場合は、前週のすべての日が対象です。
NEXT_WEEK(曜日) 日時 = NEXT_WEEK() APIを実行した週の翌週
引数にTHIS_WEEK()と同じ値を指定することで、曜日を指定できます。
引数を指定しない場合は、翌週のすべての日が対象です。
THIS_MONTH(数値またはフォーマット文字) 作成日時 = THIS_MONTH() APIを実行した月
引数に次の値を指定することで、日付を指定できます。
  • LAST:月末
  • 1から31の数値:日付
引数を指定しない場合は、月のすべての日が対象です。
指定した日付が存在しない場合は、APIを実行した月の翌月1日で計算されます。
LAST_MONTH(数値またはフォーマット文字) 作成日時 = LAST_MONTH() APIを実行した月の前月
引数に次の値を指定することで、日付を指定できます。
  • LAST:前月末
  • 1から31の数値:前月の日付
引数を指定しない場合は、月のすべての日が対象です。
指定した日付が存在しない場合は、APIを実行した月の翌月1日で計算されます。
NEXT_MONTH(数値またはフォーマット文字) 作成日時 = NEXT_MONTH() APIを実行した月の翌月
引数に次の値を指定することで、日付を指定できます。
  • LAST:翌月末
  • 1から31の数値:翌月の日付
引数を指定しない場合は、月のすべての日が対象です。
指定した日付が存在しない場合は、APIを実行した月の翌々月1日で計算されます。
THIS_YEAR() 作成日時 = THIS_YEAR() APIを実行した年
LAST_YEAR() 作成日時 = LAST_YEAR() APIを実行した年の前年
NEXT_YEAR() 日時 = NEXT_YEAR() APIを実行した年の翌年

オプション

オプション 説明
order by order by 更新日時 asc レコードを取得する順番
本オプションに続けて指定したフィールドコードの値で並び替えられます。
フィールドコードの後にascを指定すると昇順、descを指定すると降順で並び替えられます。
複数の項目で並び替える場合、「フィールドコード 並び順」をカンマ区切りで指定します。
例:order by フィールドコード1 desc, フィールドコード2 asc
省略すると、レコードIDの降順で並び替えされます。
order byで指定できるフィールドには制限があります。
詳細は次のページを参照してください。
ソートで選択できるフィールド・項目 (External link)
limit limit 20 取得するレコード数
たとえばlimit 20を指定すると、レコード先頭から20件のレコードを取得します。
0から500までの数値を指定できます。
省略すると、100が設定されます。
offset offset 30 取得をスキップするレコード数
たとえばoffset 30を指定すると、レコード先頭から30番目までのレコードは取得せず、31番目のレコードから取得します。
0から10,000までの数値を指定できます。
省略すると、0が設定されます。
補足

フィールド、システム識別子ごとの利用可能な演算子と関数一覧

利用できる演算子は、クエリを扱う操作によって異なります。

操作の種類 対象のAPI
レコードを取得する操作 複数のレコードを取得する
(レコードの一括取得)カーソルを作成する
URL内のクエリで、表示するレコードの条件を指定する
アプリの設定を変更する操作 フィールドを追加する
フィールドの設定を変更する
一覧の設定を変更する
プロセス管理の設定を変更する
レコードのアクセス権の設定を変更する
レコードの条件通知の設定を変更する
リマインダーの条件通知の設定を変更する
アプリのグラフ設定を変更する
アプリのアクション設定を変更する

レコードを取得する操作では、対象のフィールドまたはシステム識別子に使用可能なすべての演算子が利用できます。

アプリの設定を変更する操作では、画面での操作で設定できる演算子のみ指定できます。
また、絞り込み条件を指定するプロパティには次の制限があります。

  • order by limit offsetは使用できません。
  • andorは混在できません。
利用可能な演算子と関数の一覧
フィールドまたはシステム識別子 利用可能な演算子
(レコードを取得する操作)
利用可能な演算子
(アプリの設定を変更する操作)
利用可能な関数
レコード番号 = != > < >= <=
in not in
= != >= <= なし
$id = != > < >= <=
in not in
= != >= <= なし
作成者 in not in in not in LOGINUSER() PRIMARY_ORGANIZATION()
作成日時 = != > < >= <= = != > < >= <= NOW() TODAY() YESTERDAY() TOMORROW() FROM_TODAY() THIS_WEEK() LAST_WEEK() NEXT_WEEK() THIS_MONTH() LAST_MONTH() NEXT_MONTH() THIS_YEAR() LAST_YEAR() NEXT_YEAR()
更新者 in not in in not in LOGINUSER() PRIMARY_ORGANIZATION()
更新日時 = != > < >= <= = != > < >= <= NOW() TODAY() YESTERDAY() TOMORROW() FROM_TODAY() THIS_WEEK() LAST_WEEK() NEXT_WEEK() THIS_MONTH() LAST_MONTH() NEXT_MONTH() THIS_YEAR() LAST_YEAR() NEXT_YEAR()
文字列(1行) = != in not in like not like = != in like not like なし
リンク = != in not in like not like = != in like not like なし
数値 = != > < >= <=
in not in
= != >= <= なし
計算 = != > < >= <=
in not in
= != >= <= なし
文字列(複数行) like not like is is not like not like is is not なし
リッチエディター like not like like not like なし
チェックボックス in not in in not in なし
ラジオボタン in not in in not in なし
ドロップダウン in not in in not in なし
複数選択 in not in in not in なし
添付ファイル like not like is is not like not like is is not なし
日付 = != > < >= <= = != > < >= <= TODAY() YESTERDAY() TOMORROW() FROM_TODAY() THIS_WEEK() LAST_WEEK() NEXT_WEEK() THIS_MONTH() LAST_MONTH() NEXT_MONTH() THIS_YEAR() LAST_YEAR() NEXT_YEAR()
時刻 = != > < >= <= = != > < >= <= なし
日時 = != > < >= <= = != > < >= <= NOW() TODAY() YESTERDAY() TOMORROW() FROM_TODAY() THIS_WEEK() LAST_WEEK() NEXT_WEEK() THIS_MONTH() LAST_MONTH() NEXT_MONTH() THIS_YEAR() LAST_YEAR() NEXT_YEAR()
ユーザー選択 *1 in not in in not in LOGINUSER() PRIMARY_ORGANIZATION()
組織選択 *2 in not in in not in PRIMARY_ORGANIZATION()
グループ選択 in not in in not in なし
ステータス = != in not in in not in なし
作業者 in not in in not in なし
ルックアップ ルックアップ元のフィールドタイプと同じ ルックアップ元のフィールドタイプと同じ ルックアップ元のフィールドタイプと同じ
関連レコード *3 参照するアプリのフィールドタイプと同じ 参照するアプリのフィールドタイプと同じ 参照するアプリのフィールドタイプと同じ
グループ なし なし なし
カテゴリー なし なし なし

*1 ユーザー選択フィールドに選択肢を設定している場合、関数を利用できません。 ^

*2 組織選択フィールドに選択肢を設定している場合、関数を利用できません。 ^

*3 関連レコードのフィールドを条件に指定する場合、「=」と「!=」は利用できません。代わりに「in」と「not in」を使用します。 ^

APIごとの追加の制限

次のAPIには、追加の制限があります。

API 追加の制限
レコードのアクセス権の設定を変更する 文字列(1行)とリンクでlikenot likeを利用できません。
文字列(複数行)/リッチエディター/添付ファイル/関連レコードを条件に指定できません。
関数を利用できません。
レコードの条件通知の設定を変更する 文字列(複数行)/リッチエディター/添付ファイル/関連レコードを条件に指定できません。
LOGINUSER()PRIMARY_ORGANIZATION()を利用できません。
リマインダーの条件通知の設定を変更する 関連レコードを条件に指定できません。
LOGINUSER()PRIMARY_ORGANIZATION()を利用できません。
プロセス管理の設定を変更する ステータス/文字列(複数行)/リッチエディター/添付ファイル/関連レコードを条件に指定できません。
LOGINUSER()PRIMARY_ORGANIZATION()を利用できません。
フィールドを追加する
フィールドの設定を変更する
ルックアップフィールドおよび関連レコードフィールドの絞り込み設定で、関連レコードとテーブル内のフィールドを条件に指定できません。

エスケープ処理

次のフィールドの値に、"(ダブルクオート)やバックスラッシュ\(バックスラッシュ)を含む場合、エスケープが必要です。

  • 文字列(1行)
  • 文字列(複数行)
  • リッチエディター
  • チェックボックス
  • ラジオボタン
  • ドロップダウン
  • 複数選択
  • ステータス
エスケープの例

チェックボックス(フィールドコード:Checkbox)について、"\を含む値をエスケープする例です。

1
2
3
4
5
-- 「sample"1"」をエスケープする例
Checkbox in ("sample\"1\"")

-- 「sample\2\」をエスケープする例
Checkbox in ("sample\\2\\")

kintone.api()のように、リクエストボディにJSON文字列を指定する場合は、次のようにエスケープします。

1
2
3
4
5
// 「sample"1"」をエスケープする例
const body = {
  app: kintone.app.getId(),
  query: 'Checkbox in ("sample\\"1\\"")'
};
1
2
3
4
5
// 「sample\2\」をエスケープする例
const body = {
  app: kintone.app.getId(),
  query: 'Checkbox in ("sample\\\\2\\\\")'
};

kintone.api()の詳細は、次のページを参照してください。
kintone REST APIリクエストを送信するAPI

サンプルクエリ

文字列(1行)の値を指定する

文字列を完全一致で指定する場合は、=演算子を使用します。

1
2
-- フィールドコードが「Customer」のフィールドの値が「サイボウズ株式会社」
Customer = "サイボウズ株式会社"

文字列を部分一致で指定する場合は、like演算子を使用します。

1
2
-- フィールドコードが「Customer」のフィールドの値に「株式会社」を含む
Customer like "株式会社"
文字列(複数行)の値が空欄/空欄でないかどうかを指定する

文字列(複数行)フィールドの値で空欄/空欄でないかどうかを指定する場合は、isまたはis not演算子を使用します。
空欄とは、次のことを指します。

  • 空白文字、改行文字、タブ文字のいずれかのみの文字列
1
2
-- フィールドコードが「Detail」のフィールドの値が「空欄」
Detail is empty
1
2
-- フィールドコードが「Detail」のフィールドの値が「空欄でない」
Detail is not empty
ドロップダウンの値を指定する

ドロップダウンフィールドの値を指定する場合は、inまたはnot in演算子を使用します。
innot in演算子を使用するときは、値を()で囲う必要があります。

1
2
-- フィールドコードが「Progress」のフィールドの値に「対応中」または「未対応」を含む
Progress in ("対応中","未対応")
1
2
-- フィールドコードが「Progress」のフィールドの値に「完了」を含まない
Progress not in ("完了")

フィールドの値が選択されていないレコードを絞り込む場合は、in演算子に空文字""を指定します。

1
2
-- フィールドコードが「Progress」のフィールドの値が未選択
Progress in ("")

次のフィールドは、ドロップダウンと同じくinnot in演算子を使用してレコードを取得できます。

  • チェックボックス
  • ラジオボタン
  • 複数選択
日付フィールドの値を指定する

日付フィールドでは、範囲を指定して絞り込みを行うことができます。

1
2
-- フィールドコードが「LimitDay」のフィールドの値が「2022-09-29」から「2022-10-29」まで
LimitDay >= "2022-09-29" and LimitDay <= "2022-10-29"

複数の条件を指定する際にはand演算子を使って式をつなげていきます。

レコード番号フィールドの値を指定する

絞り込み条件とorder byでレコード番号のフィールドコードを指定する代わりに、$idでレコード番号フィールドを指定できます。
関連レコード一覧内のレコード番号フィールドを指定する場合、関連レコード一覧のフィールドコード.$idと指定します。

関連レコードに含まれるフィールドの値を指定する

関連レコードに含まれるフィールドを条件として含める場合、次のような形式でフィールドを指定します。

1
関連レコードのフィールドコード.関連レコード先のフィールドコード

関連レコードに含まれるフィールドの値を指定する例です。

1
2
3
4
5
-- 関連レコードのフィールドコードが「Company」のとき
-- Companyに含まれる「Name」フィールドが「サイボウズ」
-- Companyに含まれる「Address」フィールドが「東京都」を含む

Company.Name in ("サイボウズ") and Company.Address like "東京都"
テーブル内のフィールドの値を取得する

テーブル内のフィールドを取得する場合は、=!=演算子が使えません。
inまたはnot in演算子を使う必要があります。

たとえば、日時フィールドは=!=演算子を利用できますが、テーブル内の日時フィールドではinnot inを使用します。

1
2
--フィールドコードが「ResponseDate」のフィールドの値が「2022-09-29 14:00」
ResponseDate in ("2022-09-29T05:00:00Z")
複数のフィールドや条件の指定

andまたはor演算子を使って複数の条件を指定できます。

1
2
3
-- フィールドコードが「LimitDay」のフィールドの値が「今日」より前
-- フィールドコードが「Status」のフィールドの値に「完了」を含まない
LimitDay < TODAY() and Status not in ("完了")
order byを使用した条件の指定

order bylimitoffsetオプションを使うと、取得するレコードの並びや個数を指定できます。

1
2
--フィールドコードが「LimitDay」のフィールドの値の「昇順」で取得する
LimitDay < TODAY() and Status not in ("完了") order by LimitDay asc
式のグループ化

複数のフィールドに対して複数の条件を指定する場合は、式を丸括弧()で囲ってグループ化します。
グループ化を行うことにより、より詳細な条件を指定できます。

1
2
3
4
-- フィールドコードが「QType」のフィールドの値が「その他」
-- または
-- フィールドコードが「LimitDay」のフィールドの値が「2022-09-29」から「2022-10-29」まで
(QType in ("その他")) or (LimitDay >= "2022-09-29" and LimitDay <= "2022-10-29")

公式コミュニティ

kintone開発者同士で質問や知見を共有し、学び合うことができます。