我有一个动态编写的查询(通过Joomla的OO
PHP)将一些值插入MySQL数据库。用户填写的表单上有一个用于美元金额的字段,如果他们将该字段留空,我希望输入系统的值为NULL。我已经在查询运行时将查询写到了错误日志中。这是查询的样子:
INSERT INTO arrc_Voucher
(VoucherNbr,securityCode,sequentialNumber, TypeFlag, CreateDT, ActivatedDT, BalanceInit, BalanceCurrent, clientName)
VALUES
('6032100199108006', '99108006','12','V','2010-10-29 12:50:01','NULL','NULL','NULL','')
但是,当我查看数据库表时,尽管ActivatedDT正确设置为NULL,但BalanceInit和BalanceCurrent均为0.00。ActivatedDT字段是日期时间,而其他两个字段是十进制(18,2),并且这三个字段在表结构中均设置为默认值NULL。
如果我运行这样的查询:
UPDATE arrc_Voucher
SET BalanceInit = null
WHERE BalanceInit like "0%"
…它确实将值设置为null,那么为什么初始插入查询不这样做呢?是因为引号中为null吗?如果是这样,为什么要为ActivatedDT正确设置?
删除周围的引号NULL
。实际上发生的是它试图将字符串'NULL'
作为数字插入,并且由于不能将其转换为数字,因此使用默认值0
。
至于为什么ActivatedDT起作用,我猜这是一个日期字段。未能将字符串转换为日期通常会导致将值设置为0
(将其格式化为类似“
1969-12-31”的格式),但是如果NO_ZERO_DATE
启用了模式,则将其设置为NULL
。
如果您希望MySQL在这种情况下引发错误,则在传递无效值时,可以设置STRICT_ALL_TABLES
或STRICT_TRANS_TABLES
(确保您已阅读有关它们之间差异的部分)或一种仿真模式,例如TRADITIONAL
。
你可以用命令试试这个SET sql_mode='TRADITIONAL'
,或者通过增加sql- mode="TRADITIONAL"
在my.cnf
。
问题内容: 我正在运行一个非常简单的查询,但是对于某些结果,一个字段中的值为空。如果该值为null,如何将其设置为“字符串”? 就像是 它将在sql server 2005上运行 谢谢 问题答案: 使用以下内容: 或@Lieven指出: COALESCE的动态之处在于您可以定义更多的参数,因此,如果第一个为null,则获取第二个参数,如果第二个为null,则获取第三个,依此类推…
我正在创建一个spring cloud Kafka流应用程序。我有一个输入主题和一个输出主题,我试图使用KStream.map函数对输入主题应用KStream键值转换操作 问题如果转换后的值为null,该函数将抛出IllegalArgumentException 我的问题是: 1:异常的原因?尽管文档中说:“忽略具有空键或空值的输入记录” 2:处理无状态/有状态操作中异常的最佳实践?一个try/c
问题内容: 是否可以执行这样的mysql查询? 我需要在一般的“ where”子句中使用子查询的结果。 问题答案: 您可以将其包装在子查询中,如下所示:
我有以下代码: 为什么我对布尔变量“bool”的检查会导致异常?当它“看到”if语句不是真的时,它难道不应该跳过if语句吗?当我移除if语句或检查它是否为空时,异常就会消失。
问题内容: 我希望将值设置为如果我提交的表单中的文本框未放入任何内容。我怎样才能做到这一点?我尝试插入,但这只是将单词添加到字段中。 我不确定应该为此提供什么代码,我只是在编写UPDATE查询。 问题答案: 不要在更新语句中加引号。这应该工作:
补充: temp是别名,我截图截错了; plan_start_time 是varchar类型 SELECT STR_TO_DATE(plan_start_time, '%h:%i:%s') as temp ,plan_start_time from base_stop_calendar