整数列可以为空吗?

Posted

技术标签:

【中文标题】整数列可以为空吗?【英文标题】:Can an integer column be null? 【发布时间】:2018-03-10 16:07:52 【问题描述】:

我创建了一个 integer 列,默认情况下为 null,但是当我输入空双引号 "" 时,它会出现此错误:

ERROR: invalid input syntax for integer: ""

那么integer 列是否必须是0

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

【问题讨论】:

此问题应提供表定义和实际使用的INSERT 语句。 【参考方案1】:

整数列可以为空,但'' 是一个不为空的空字符串。空整数(或任何其他 sql 类型)的正确语法是 null

【讨论】:

我也尝试过输入 null it self 这个词,带引号和不带引号,但仍然是一个错误。【参考方案2】:

双引号可用于分隔标识符,例如"myColumnName"。 单引号用于分隔字符串字面量中的,例如'my string literal'。 对于integer 值,您通常使用数字常量 来输入根本不被引用的值,例如123。 (但您也可以转换字符串文字。) 数值数据类型(integernumericdouble precision、...)不能存储空字符串(''),只有字符串类型(textvarchar、...)可以。 要传递NULL 值,请使用关键字NULL。或者从您的INSERT 语句中省略列完全。如果您没有定义不同的列默认值,它会自动默认为NULL

您在错误消息中看到的双引号只是 Postgres 为错误消息添加的分隔符,这意味着您传递了一个空字符串 ('')。如果你真的通过了

空双引号“”

(需要依次单引号:'""'),您会看到以下错误消息:

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

不确定 Java 是如何参与其中的。

考虑一下 Postgres 手册中的 Lexical Structure 章节。

相关:

Insert text with single quotes in PostgreSQL

【讨论】:

以上是关于整数列可以为空吗?的主要内容,如果未能解决你的问题,请参考以下文章

C# 8 中的不可为空的引用类型在运行时可以为空吗?

外键可以为空吗? [复制]

Oracle 序列可以为空吗?

Redshift:sortkey 和 distkey 可以为空吗?

我们可以在 info.plist 中为键 NSPhotoLibraryAddUsageDescription 保留描述为空吗?

我们可以在 info.plist 中为键 NSPhotoLibraryAddUsageDescription 保留描述为空吗?