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

PostgreSQLで空をnullに変換する方法は?

    NULLIF()<があります/ code> 機能:

    SELECT NULLIF(var, '');
    

    varの場合 $ 2の値を保持すると、 NULLが得られます 代わりに。
    この例では、空の文字列を置き換えます:'' NULLを使用 。

    整数型の空の文字列はありません 。不可能です。 NULLIF()以降 データ型を切り替えることはできません。PHPで入力をサニタイズする必要があります。

    列のデフォルトを定義しなかった場合は、列を省略することもできます。 INSERTで コマンドを実行すると、 NULLで埋められます (これはデフォルトの DEFAULT

    PHPでパラメータが空であり、 INSERTに列が含まれていないかどうかを確認します そうである場合はコマンド。

    または、PHPリテラルNULLを使用します 代わりに、Quassnoiがここ を示しているように 。

    残りは文字列タイプにのみ意味があります

    絶対に確認する 、誰も空の文字列を入力できません CHECKを追加します テーブルへの制約:

    ALTER TABLE tr_view
    ADD CONSTRAINT tr_view_age_not_empty CHECK (age <> '');
    

    例外を回避する これが原因で、入力を自動的に修正するトリガーを追加できます:

    CREATE OR REPLACE FUNCTION trg_tr_view_avoid_empty()
      RETURNS trigger AS
    $func$
    BEGIN
       IF NEW.age = '' THEN
          NEW.age := NULL;
       END IF;
    
       IF NEW.month = '' THEN
          NEW.month := NULL;
       END IF;
    
       RETURN NEW;
    END
    $func$  LANGUAGE plpgsql
    
    CREATE TRIGGER tr_view_avoid_empty
    BEFORE INSERT OR UPDATE ON tr_view
    FOR EACH ROW
    WHEN (NEW.age = '' OR NEW.month = '')
    EXECUTE PROCEDURE trg_tr_view_avoid_empty();
    


    1. SQL Server:oracle keepdensity_rankクエリを模倣する方法は?

    2. 時間範囲の時間内にグループ化されたギャップをカウントする

    3. PHPスクリプトを呼び出してJavascriptからデータベースを更新する

    4. 私のリソースを浪費する奇妙なSQL