コンテンツにスキップ

JSON型のテーブルタイプ別サポート範囲

JSON型の列を各テーブルタイプで使用する場合のサポート範囲を示します。

サポート範囲の概要

テーブルタイプJSON列の作成JSON path queryJSON PK備考
TAGOOXJSON列とJSON関数をサポート。PKは非対応
LOGOOXJSON列とJSON関数をサポート
LOOKUPOOX通常の列としてサポート。JSONパスインデックスは非対応
VOLATILEXXXJSON列の作成不可
TRANSACTIONOOXJSON列とJSON関数をサポート

LOOKUPテーブル

LOOKUPテーブルはJSON型の列を通常の列としてサポートします。

CREATE LOOKUP TABLE config_lookup (
    key    VARCHAR(64) PRIMARY KEY,
    site   VARCHAR(32),
    config JSON
);

INSERT INTO config_lookup VALUES (
    'device-001',
    'SEOUL',
    '{"region":"kr","level":3,"state":"ready"}'
);

SELECT key
FROM config_lookup
WHERE config->'$.region' = 'kr'
  AND JSON_EXTRACT_INTEGER(config, '$.level') >= 3;

JSON列はJSON_SETJSON_SET_JSONJSON_REMOVEなどのJSON関数で更新できます。

UPDATE config_lookup
SET config = JSON_SET(config, '$.state', 'active')
WHERE site = 'SEOUL';

ただし、JSON列は主キーとして宣言できません。

-- エラー
CREATE LOOKUP TABLE invalid_lookup (
    config JSON PRIMARY KEY
);

VOLATILEテーブル

VOLATILEテーブルではJSON型の列を作成できません。

CREATE VOLATILE TABLE session_data (
    session_id VARCHAR(64) PRIMARY KEY,
    payload    JSON
);

JSON関連関数のテーブルタイプ別サポート

関数/演算子TAGLOGLOOKUPVOLATILETRANSACTION
->演算子OOOXO
JSON_EXTRACT*OOOXO
JSON_TYPEOFOOOXO
JSON_IS_VALIDOOOOO
JSON_SETOOOXO
JSON_SET_JSONOOOXO
JSON_REMOVEOOOXO

使用上の注意

  • JSONパス文字列は単一引用符('$.key')で囲みます。
  • 数値の比較にはJSON_EXTRACT_INTEGERJSON_EXTRACT_DOUBLEなどの型別の関数を使用します。
  • LOOKUPテーブルではJSONパス専用インデックスをサポートしないため、頻繁に検索する値は別の列に分離します。
最終更新日