我创建了一个
integer
列,默认情况下为 null
但是当我放置空双引号 ""
时,它会给出此错误:
ERROR: invalid input syntax for integer: ""
那么
integer
栏一定是0
吗?
我正在使用 Java 将查询发送到数据库。
整数列可以为空,但
''
是空字符串而不是空。空整数(或任何其他 SQL 类型)的正确语法是 null
。
双引号可用于分隔 标识符,例如
"myColumnName"
。'my string literal'
。integer
值,您通常使用 数字常量 来输入值,这些值根本不带引号,例如 123
。 (但是您也可以转换字符串文字。)integer
、numeric
、double precision
, ...) 无法存储空字符串 (''
),只有字符串类型 (text
、varchar
, ...) 可以。null
。或者从您的 INSERT
声明中省略 完全列。如果您没有定义不同的列默认值,它会自动默认为
null
。
您在错误消息中看到的双引号只是 Postgres 为了错误消息而添加的分隔符,这意味着您传递了一个空字符串 (
''
)。如果你真的通过了
空双引号“”
(需要依次用单引号括起来:
'""'
),您会看到以下错误消息:
ERROR: invalid input syntax for integer: """"
不确定 Java 是如何发挥作用的。
考虑 Postgres 手册中的词汇结构一章。
相关: