- カテゴリ:
変換関数 、 半構造化データ関数と構造化データ関数 (キャスト)
TO_JSON¶
VARIANT 値を値の JSON 表現を含む文字列に変換します。
構文¶
引数¶
expr有効な JSON 情報を保持する VARIANT 型の式です。
戻り値¶
VARCHAR 型の値を返します。
入力が NULL の場合、関数は NULL を返します。
使用上の注意¶
入力が NULL の場合は、出力も NULL です。入力が JSON null を含む VARIANT である場合、戻り値は文字列
"null"(つまり、二重引用符で囲まれた"null"という単語)です。以下の例をご参照ください。JSON オブジェクト(別名「ディクショナリ」または「ハッシュ」)は、キーと値のペアの 順序付けられていない セットです。TO_JSON が文字列を生成する場合、その文字列内のキーと値のペアの順序は予測できません。
TO_JSON および PARSE_JSON は(ほぼ)逆または相反する関数です。
PARSE_JSON 関数は入力として文字列を取り、JSON互換の VARIANT を返します。
TO_JSON 関数はJSON互換VARIANTを受け取り、文字列を返します。
Xが有効な JSON を含む文字列である場合、次は(概念的に)trueです。
X = TO_JSON(PARSE_JSON(X));例えば、次は(概念的に)trueです。
'{"pi":3.14,"e":2.71}' = TO_JSON(PARSE_JSON('{"pi":3.14,"e":2.71}'))ただし、関数は次の2つの理由で完全には逆数ではありません。
空の文字列、および空白のみの文字列は、相互に処理されません。例えば、
PARSE_JSON('')の戻り値は NULL ですが、TO_JSON(NULL)の戻り値は NULL であり、相反する''ではありません。TO_JSON によって生成される文字列内のキーと値のペアの順序は予測できません。
TO_JSON によって生成された文字列には、 PARSE_JSON に渡される文字列よりも少ない空白を含めることができます。
次は同等のJSONですが、同等の文字列ではありません。
{"pi": 3.14, "e": 2.71}{"e":2.71,"pi":3.14}
例¶
以下の例では、 TO_JSON 関数を使用しています。
VARIANT の値を挿入し、クエリで文字列に変換します。¶
テーブルを作成して入力します。INSERT ステートメントでは、 PARSE_JSON 関数を使用して、テーブルの v 列に VARIANT 値を挿入します。
データをクエリし、 TO_JSON 関数を使用して VARIANT の値を文字列に変換します。
PARSE_JSON と TO_JSON 関数を使用した NULL 値の処理¶
次の例は、 PARSE_JSON と TO_JSON が NULL 値をどのように処理するかを示しています。
PARSE_JSON と TO_JSON の比較¶
以下の例は、 PARSE_JSON と TO_JSON 関数の関係を示しています。
この例では、 VARCHAR 列と VARIANT 列を持つテーブルを作成します。INSERT ステートメントは VARCHAR 値を挿入し、 UPDATE ステートメントはその VARCHAR 値に対応する JSON 値を生成します。
このクエリは、 TO_JSON と PARSE_JSON が概念的に逆関数であることを示しています。
しかし、この関数は完全に逆数ではありません。空白またはキーと値のペアの順序が違うときは、出力が入力と一致しない場合があります。例: