【问题标题】:postgresql insert null value on querypostgresql 在查询中插入空值
【发布时间】:2015-05-23 15:13:04
【问题描述】:

在我的 php 代码查询中,我在放置空值时遇到了一些错误 到表中。列名“number1”、“number2”和“number3”是整数,可以有一个空值。

如果没有空值,则查询有效

查询是这样的 插入表(number1,number2,number3) 值 (1,2,3);

但是当我在 PHP 的输入表单上留下一个空白值时,

例如,我不会为列“number2”设置值,查询将看起来 像这样。

插入表(number1,number2,number3) 值 (1,,3);

它说 ERROR: syntax error at or near "," SQL 状态:42601

有人知道如何解决这个问题吗?

此查询可能是解决方案,但还有其他方法吗? 插入表(number1,number2,number3) 值(1,null,3);

因为我有这么多这样的变量,并且有点懒于放置一些条件,例如当该变量返回空白值时 value="null"

【问题讨论】:

    标签: php postgresql


    【解决方案1】:

    您通过键入 NULL 插入 NULL 值:

    INSERT INTO table(number1,number2,number3) VALUES (1,NULL,3);
    

    如果您有一个变量,并且当该变量为空时,您想插入一个 NULL 值,您可以使用 NULLIF 并将变量括在单引号中来为此做准备(这是一个有点脏的解决方案,因为您必须将变量视为空字符串,然后将其转换为整数):

    INSERT INTO table(number1,number2,number3) VALUES (1,NULLIF('$var','')::integer,3);
    

    【讨论】:

    • 除此之外还有其他解决方案吗? ^_^ 因为我有这么多这样的变量,我不想浪费时间在变量返回空白值时为变量设置条件,然后分配该变量 =“null” ..顺便感谢那:)
    • 好的,添加了另一个选项。
    • tanx SIR...我把它放在我的代码上,因为数据类型是双精度INSERT INTO table(number1,number2,number3) VALUES (1,cast(NULLIF('$variable[$i]','') as double precision),3);
    • $变量,小心SQL注入!
    • SIR 应该怎么做才能避免注射? ^_^
    猜你喜欢
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    相关资源
    最近更新 更多