默认情况下,我创建的integer
列为null
,但当我输入空双引号""
时,会出现此错误:
ERROR: invalid input syntax for integer: ""
integer
列必须是0
吗?
我正在使用Java将查询发送到数据库。
答案 0 :(得分:5)
整数列可以为null,但''
为空字符串,不为空。空整数(或任何其他sql类型)的正确语法是null
。
答案 1 :(得分:4)
双引号可用于分隔标识符,例如"myColumnName"
。
单引号用于在字符串文字中分隔值,例如'my string literal'
。
对于integer
值,您通常使用数字常量来输入未引用的值,例如123
。 (但你也可以施放字符串文字。)
数字数据类型(integer
,numeric
,double precision
,...)不能存储空字符串(''
),只能存储字符串类型(text
,{{ 1}},...)可以。
要传递varchar
值,请使用关键字NULL
。或者从NULL
语句中省略列 。如果您没有定义其他列默认值,则会自动默认为INSERT
。
您在错误消息中看到的双引号只是Postgres为错误消息添加的分隔符,这意味着您传递了一个空字符串(NULL
)。如果你真的通过了
空双引号“”
(需要依次单引号:''
),您会看到以下错误消息:
'""'
不确定Java是如何发挥作用的。
考虑Postgres手册中的Lexical Structure章节。
相关: