メインコンテンツまでスキップ
に最終更新

JSON_VALID

説明​

JSON_VALID 関数は、入力が有効な JSON 形式かどうかを検証します。文字列型と JSON 型の入力を受け付けます。

構文​

JSON_VALID(<str>)
JSON_VALID(<json>)

パラメータ​

  • <str>: 検証対象の JSON 形式の文字列です。
  • <json>: 検証対象の JSON 型の値です。

戻り値​

  • 1: 入力が有効な JSON 形式の場合。
  • 0: 入力が有効な JSON 形式ではない場合。
  • NULL: 入力パラメータが NULL の場合。

注意事項​

JSON 型のパラメータをサポートしているため、JSON 列を渡す際の暗黙的な型変換 (JSON から文字列) による問題を避けられます。JSON 型の列に格納されるデータは通常有効な JSON なので、JSON 型のパラメータに JSON_VALID を適用すると、通常は 1 を返します。

別名​

  • JSONB_VALID

例​

  1. 有効な JSON 文字列を検証する

    SELECT json_valid('{"k1":"v31","k2":300}');
    +-------------------------------------+
    | json_valid('{"k1":"v31","k2":300}') |
    +-------------------------------------+
    | 1 |
    +-------------------------------------+
  2. 無効な JSON 文字列を検証する

    SELECT json_valid('invalid json');
    +----------------------------+
    | json_valid('invalid json') |
    +----------------------------+
    | 0 |
    +----------------------------+
  3. NULL パラメータを検証する

    SELECT json_valid(NULL);
    +------------------+
    | json_valid(NULL) |
    +------------------+
    | NULL |
    +------------------+
  4. JSON 型のパラメータを検証する

    SELECT json_valid(cast('{"k1":"v31","k2":300}' as json));
    +----------------------------------------------------+
    | json_valid(cast('{"k1":"v31","k2":300}' as json)) |
    +----------------------------------------------------+
    | 1 |
    +----------------------------------------------------+