クエリの書き方

目次

クエリの書き方

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

クエリの記述例は次を参照してください。
サンプルクエリ

演算子

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

演算子 説明
= 文字列_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つの条件式の論理積
補足
  • テーブル内のフィールド、および関連レコードのフィールドをクエリに含める場合、=!=演算子の代わりに、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が設定されます。

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

フィールドまたはシステム識別子 利用可能な関数
レコード番号 = != > < >= <= in
not in
なし
$id = != > < >= <= in not in なし
作成者 in not in LOGINUSER()
作成日時 = != > < >= <= 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 LOGINUSER()
更新日時 = != > < >= <= 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 not in like not like なし
数値 = != > < >= <= in not in なし
計算 = != > < >= <= in not in なし
文字列(複数行) like not like なし
リッチエディター like not like なし
チェックボックス in not in なし
ラジオボタン in not in なし
ドロップダウン in not in なし
複数選択 in not in なし
添付ファイル like not like なし
日付 = != > < >= <= 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()
ユーザー選択 in not in LOGINUSER()
組織選択 in not in PRIMARY_ORGANIZATION()
グループ選択 in not in なし
ステータス = != in not in なし
ルックアップ ルックアップ元のフィールドタイプと同じ ルックアップ元のフィールドタイプと同じ
関連レコード 参照するアプリのフィールドタイプと同じ 参照するアプリのフィールドタイプと同じ
グループ なし なし
カテゴリー なし なし

エスケープ処理

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

  • 文字列(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 "株式会社"
ドロップダウンの値を指定する

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

1
2
-- フィールドコードが「Status」のフィールドの値に「対応中」または「未対応」を含む
Status in ("対応中","未対応")
1
2
-- フィールドコードが「Status」のフィールドの値に「完了」を含まない
Status not 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")