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

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

ERROR: invalid input syntax for integer: ""

那么integer 列是否必须是0

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

【问题讨论】:

  • 此问题应提供表定义和实际使用的INSERT 语句。

标签: postgresql null integer quotes postgresql-9.3


【解决方案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 章节。

相关:

【讨论】:

    猜你喜欢
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多