読み取り専用分析エンジンのバージョン2.2410.x以降では、RFC 7159規格に準拠したJSON(JavaScript Object Notation)データ型の新規サポートを追加しました。ユーザーは半構造化されたJSONデータを保存できるだけでなく、JSONドキュメント内のデータにアクセスおよび変更することも可能です。
JSON列に格納されたJSONドキュメントは、迅速な読み取りとアクセスが可能な形式に変換できます。サーバーがバイナリ形式で保存されたJSON値を読み取る際、テキスト形式から解析する必要はありません。
JSONデータ型以外に、一連のSQL関数があり、これらはJSON値の作成、検索などの操作に使用できます。サポートされている関数の詳細は以下の通りです。
JSON_OBJECT関数
JSONオブジェクトを作成します。
構文:JSON_OBJECT(key1, value1, key2, value2…)
入力パラメータ値に基づいてJSONオブジェクトを作成します。
JSON_REMOVE関数
指定されたJSONオブジェクトから対応するパスを削除できます。
構文:JSON_REMOVE(json_doc, path[, path] ...)
json_docはJSONフィールドであり、pathはパスです。複数のパスをサポートします。
JSON_EXTRACT 関数
JSONフィールドから指定されたパスの要素を抽出します。指定されたパスが存在しない場合、NULLが返されます。複数のパスを指定でき、一致した複数の値は配列形式で返されます。
構文:JSON_EXTRACT(json_doc, path[, path] ...)はcolumn-> pathと同義である。
json_docはJSONフィールドであり、pathはパスです。
JSON_UNQUOTE関数
JSONをエスケープ処理して文字列として出力します。
構文:JSON_UNQUOTE(column -> path)はcolumn->> pathと同義である。
json_docはJSONフィールドであり、pathはパスです。
JSON_CONTAINS関数
指定されたパスが指定データを含むかどうかを判定します。含む場合は1を返し、含まない場合は0を返します。パラメータがNULLであるか、パスが存在しない場合はNULLを返します。
構文:JSON_CONTAINS(json_doc, candidate[, path])
json_docはJSONフィールドであり、candidateは判定値、pathはパスです。
JSON_CONTAINS_PATH 関数
指定されたパスが存在するかどうか、および一つまたはすべての条件を満たすかどうかをチェックします。条件を満たす場合は1を返し、満たさない場合は0を返します。パラメータがNULLの場合はNULLを返します。
構文:JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] …)
json_docはJSONフィールドであり、one_or_allの「one」は一つ見つかった場合に返すことを示し、「all」はすべて見つかった後に返すことを示します。pathはパスであり、複数のパスをサポートします。
型変換
JSONからINT、UINT、FLOAT、STRING、DATE、DATETIME、DURATIONへの変換をサポートします。
INT、UINT、FLOAT、STRING、DATE、DATETIME、DURATIONをJSONに変換することをサポートします。