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();