整数列可以为空吗?

问题描述 投票:0回答:2

我创建了一个

integer
列,默认情况下为
null
但是当我放置空双引号
""
时,它会给出此错误:

ERROR: invalid input syntax for integer: ""

那么

integer
栏一定是
0
吗?

我正在使用 Java 将查询发送到数据库。

postgresql null integer quotes postgresql-9.3
2个回答
17
投票

整数列可以为空,但

''
是空字符串而不是空。空整数(或任何其他 SQL 类型)的正确语法是
null


8
投票

双引号可用于分隔 标识符,例如

"myColumnName"

单引号用于分隔 字符串文字中的,如
'my string literal'

对于
integer
值,您通常使用 数字常量 来输入值,这些值根本不带引号,例如
123
。 (但是您也可以转换字符串文字。)
数字数据类型 (
integer
numeric
double precision
, ...) 无法存储空字符串 (
''
),只有字符串类型 (
text
varchar
, ...) 可以。
要传递空值,请使用关键字
null
。或者从您的 INSERT 声明中省略
完全
列。如果您没有定义不同的列默认值,它会自动默认为
null

您在错误消息中看到的双引号只是 Postgres 为了错误消息而添加的分隔符,这意味着您传递了一个空字符串 (

''
)。如果你真的通过了

空双引号“”

(需要依次用单引号括起来:

'""'
),您会看到以下错误消息:

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

不确定 Java 是如何发挥作用的。

考虑 Postgres 手册中的词汇结构一章。

相关:

© www.soinside.com 2019 - 2024. All rights reserved.