sql >> データベース >  >> RDS >> PostgreSQL

JSONが有効であることをPostgresqlで確認するにはどうすればよいですか?

    これは、適切なデータ型を最初から選択することが後で役立つもう1つの良い例です;)

    特定のテキストが有効なJSONであるかどうかを確認する組み込み関数はありません。ただし、独自に作成することはできます:

    create or replace function is_valid_json(p_json text)
      returns boolean
    as
    $$
    begin
      return (p_json::json is not null);
    exception 
      when others then
         return false;  
    end;
    $$
    language plpgsql
    immutable;
    

    注意:例外処理のため、これは高速ではありません。多くの無効な値でそれを呼び出すと、選択が大幅に遅くなります。

    ただし、両方の'{"products": 1}' および'{"products": [1,2,3]}' 有効なJSONドキュメントです。前者が無効であるという事実は、JSON構文ではなく、アプリケーションロジックに基づいています。

    同様の関数が必要であることを確認するために、json_array_length()を呼び出すときにエラーをトラップします

    create or replace function is_valid_json_array(p_json text, p_element text)
      returns boolean
    as
    $$
    begin
      return json_array_length( p_json::json -> p_element) >= 0;
    exception 
      when others then
         return false;  
    end;
    $$
    language plpgsql
    immutable;
    



    1. 日付ピッカーでクエリをフィルタリングした後、特定の値を持つ行数を取得する

    2. MySQLシェルを使用した論理データベースのバックアップ

    3. プロジェクトを表示するときに更新した後のgitlabエラー500

    4. MySQLビューは通常のクエリよりも高速ですか?