web-dev-qa-db-ja.com

整数列をnullにすることはできますか?

デフォルトでintegerであるnull列を作成しましたが、空の二重引用符""を入力すると、次のエラーが発生します。

ERROR: invalid input syntax for integer: ""

integer列は0である必要がありますか?

Javaを使用してクエリをデータベースに送信しています。

3
efoc

整数列はnullにすることができますが、''はnullではない空の文字列です。 null整数(またはその他のSQL型)の正しい構文はnullです。

7
Sam Hartman

"myColumnName"のように、二重引用符を使用して識別子を区切ることができます。
一重引用符は、文字列リテラルを区切るために使用されます)、'my string literal'のように。
integer値の場合、通常は数値定数を使用して、123のように引用符で囲まれていない値を入力します。 (ただし、can文字列リテラルもキャストできます。)
数値データ型(integernumericdouble precision、...)は、空の文字列('')を格納できず、文字列型(textvarchar、...)できます。
NULL値を渡すには、キーワードNULLを使用します。または、INSERTステートメントから列を完全に省略します。別の列のデフォルトを定義しなかった場合、デフォルトで自動的にNULLになります。

エラーメッセージに表示される二重引用符は、エラーメッセージの目的でPostgresによって追加された区切り文字です。つまり、空の文字列('')を渡しました。あなたが実際に合格するなら

空の二重引用符 ""

(順番に一重引用符で囲む必要があります:'""')、次のエラーメッセージが表示されます:

ERROR:  invalid input syntax for integer: """"

Javaがこれにどのように作用するかわからない。

Postgresマニュアルの 字句構造 の章を検討してください。

関連:

5