"""kintoneクエリ言語のドキュメントと仕様."""
def get_query_language_documentation() -> str:
"""kintoneクエリ言語の完全なドキュメントを返す."""
return """# kintoneクエリ言語仕様
## 基本構文
kintoneのクエリは以下の形式で記述します:
```
フィールドコード 演算子 値
```
複数の条件を組み合わせる場合:
```
条件1 and 条件2
条件1 or 条件2
```
## 演算子一覧
### 比較演算子
- `=`: 等しい
- `!=`: 等しくない
- `>`: より大きい
- `<`: より小さい
- `>=`: 以上
- `<=`: 以下
### 文字列演算子
- `like`: 部分一致(文字列型フィールドのみ)
- `not like`: 部分一致しない
- `in`: いずれかに一致
- `not in`: いずれにも一致しない
## 論理演算子
- `and`: かつ(すべての条件を満たす)
- `or`: または(いずれかの条件を満たす)
## 値の指定方法
### 文字列
- ダブルクォートで囲む: `"値"`
- エスケープ: `\\"` でダブルクォートを含められる
### 数値
- そのまま記述: `100`、`-50`、`3.14`
### 日時
- ダブルクォートで囲んだISO 8601形式
- 日付: `"2024-01-01"`
- 日時: `"2024-01-01T09:00:00Z"`
### 配列(IN演算子用)
- カンマ区切りで括弧で囲む: `("値1", "値2", "値3")`
## 特殊な関数
### ユーザー関連
- `LOGINUSER()`: ログインユーザー
- `PRIMARY_ORGANIZATION()`: ログインユーザーの優先組織
### 日時関連
- `NOW()`: 現在の日時
- `TODAY()`: 今日の日付
- `YESTERDAY()`: 昨日の日付
- `TOMORROW()`: 明日の日付
- `THIS_WEEK()`: 今週
- `LAST_WEEK()`: 先週
- `THIS_MONTH()`: 今月
- `LAST_MONTH()`: 先月
- `THIS_YEAR()`: 今年
- `LAST_YEAR()`: 去年
### 期間計算
- `FROM_TODAY(数値, 単位)`: 今日から指定期間
- 単位: `DAYS`, `WEEKS`, `MONTHS`, `YEARS`
- 例: `FROM_TODAY(7, DAYS)` = 今日から7日間
## クエリオプション
### order by(並び替え)
```
クエリ order by フィールドコード asc
クエリ order by フィールドコード desc
```
複数フィールドでの並び替え:
```
order by フィールド1 asc, フィールド2 desc
```
### limit(取得件数制限)
```
クエリ limit 100
```
### offset(取得開始位置)
```
クエリ offset 200
```
組み合わせ例:
```
ステータス = "進行中" order by 更新日時 desc limit 50 offset 0
```
## フィールドタイプ別の使用可能演算子
### 文字列(1行)・文字列(複数行)
- 使用可能: `=`, `!=`, `in`, `not in`, `like`, `not like`
### 数値・計算
- 使用可能: `=`, `!=`, `>`, `<`, `>=`, `<=`, `in`, `not in`
### チェックボックス・複数選択
- 使用可能: `in`, `not in`
### ラジオボタン・ドロップダウン
- 使用可能: `=`, `!=`, `in`, `not in`
### 日付・日時・作成日時・更新日時
- 使用可能: `=`, `!=`, `>`, `<`, `>=`, `<=`
### 作成者・更新者・ユーザー選択
- 使用可能: `in`, `not in`
- `LOGINUSER()` 関数が使用可能
### ステータス
- 使用可能: `=`, `!=`, `in`, `not in`
## クエリ例
### 基本的な検索
```
# 特定のステータスのレコード
ステータス = "完了"
# 金額が1000円以上
金額 >= 1000
# タイトルに「重要」を含む
タイトル like "重要"
```
### 複合条件
```
# ステータスが「進行中」かつ優先度が「高」
ステータス = "進行中" and 優先度 = "高"
# カテゴリが「A」または「B」
カテゴリ in ("A", "B")
# 今月作成されたレコード
作成日時 >= THIS_MONTH()
```
### 日付範囲検索
```
# 過去7日間に更新されたレコード
更新日時 >= FROM_TODAY(-7, DAYS)
# 特定期間のレコード
日付 >= "2024-01-01" and 日付 <= "2024-12-31"
```
### ユーザー関連
```
# 自分が担当者のレコード
担当者 in (LOGINUSER())
# 自分の組織のメンバーが作成
作成者 in (PRIMARY_ORGANIZATION())
```
### 並び替えとページング
```
# 更新日時の新しい順で最初の20件
更新日時 != "" order by 更新日時 desc limit 20
# 101件目から50件取得
ステータス = "進行中" limit 50 offset 100
```
## 注意事項
1. **フィールドコード**
- 大文字・小文字を区別します
- 日本語のフィールドコードも使用可能
- スペースを含む場合は使用できません
2. **文字列の比較**
- 空文字の判定: `フィールドコード = ""`
- like演算子では `%` や `_` はワイルドカードとして機能しません
3. **数値の比較**
- 小数点も使用可能
- 計算フィールドでも検索可能
4. **日時の扱い**
- タイムゾーンに注意(通常はUTCで指定)
- 日付型フィールドに時刻を含めるとエラー
5. **IN演算子**
- 最大100個まで値を指定可能
- 配列の要素は同じ型である必要があります
6. **パフォーマンス**
- インデックスが設定されているフィールドでの検索が高速
- like演算子は部分一致のため処理が重い
- 大量データの場合はlimitとoffsetを活用
7. **レコード番号での検索**
- `$id` を使用: `$id = 100`
- 複数指定: `$id in (1, 2, 3)`
8. **サブテーブル**
- サブテーブル内のフィールドは検索対象外
- メインテーブルのフィールドのみ検索可能
9. **添付ファイル**
- 添付ファイル名やファイル内容での検索は不可
10. **演算子の優先順位**
- andはorより優先される
- 括弧は使用できないため、複雑な条件は注意が必要"""