デフォルトでinteger
であるnull
列を作成しましたが、空の二重引用符""
を入力すると、次のエラーが発生します。
ERROR: invalid input syntax for integer: ""
integer
列は0
である必要がありますか?
Javaを使用してクエリをデータベースに送信しています。
整数列はnullにすることができますが、''
はnullではない空の文字列です。 null整数(またはその他のSQL型)の正しい構文はnull
です。
"myColumnName"
のように、二重引用符を使用して識別子を区切ることができます。
一重引用符は、文字列リテラルの値を区切るために使用されます)、'my string literal'
のように。integer
値の場合、通常は数値定数を使用して、123
のように引用符で囲まれていない値を入力します。 (ただし、can文字列リテラルもキャストできます。)
数値データ型(integer
、numeric
、double precision
、...)は、空の文字列(''
)を格納できず、文字列型(text
、varchar
、...)できます。NULL
値を渡すには、キーワードNULL
を使用します。または、INSERT
ステートメントから列を完全に省略します。別の列のデフォルトを定義しなかった場合、デフォルトで自動的にNULL
になります。
エラーメッセージに表示される二重引用符は、エラーメッセージの目的でPostgresによって追加された区切り文字です。つまり、空の文字列(''
)を渡しました。あなたが実際に合格するなら
空の二重引用符 ""
(順番に一重引用符で囲む必要があります:'""'
)、次のエラーメッセージが表示されます:
ERROR: invalid input syntax for integer: """"
Javaがこれにどのように作用するかわからない。
Postgresマニュアルの 字句構造 の章を検討してください。
関連: