一个整数列可以为空吗?

8

我创建了一个默认为 null 的整数列,但当我放置空字符串 "" 时,它会出现以下错误:

ERROR: invalid input syntax for integer: ""

integer列必须为0吗?

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


3
这个问题需要提供表的定义和实际使用的INSERT语句。 - Erwin Brandstetter
2个回答

17

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


7
我也尝试过输入单词"null",带引号和不带引号都试了,但还是出错了。 - efoc

6
双引号可以用来界定标识符,例如"myColumnName"。
单引号用于在字符串文字中界定值,例如'my string literal'。
对于整数值,通常使用数字常量输入值,它们根本不被引用,例如123。(但您也可以将字符串文字强制转换。)
数值数据类型(integer、numeric、double precision等)不能存储空字符串(''),只有字符串类型(text、varchar等)可以。
要传递NULL值,请使用关键字NULL。或者从INSERT语句中完全省略该列。如果您没有定义不同的列默认值,则默认为NULL。
您在错误消息中看到的双引号只是Postgres添加的分隔符,用于错误消息的目的,这意味着您传递了一个空字符串('')。如果您实际上通过
empty double quotes ""
(这需要再次用单引号引用:''''),您将看到此错误消息:
ERROR:  invalid input syntax for integer: """"

不确定Java如何参与其中。

请参考Postgres手册中的章节词法结构

相关内容:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接