繁体   English   中英

为什么Oracle DB不更新文件

[英]Why oracle DB does not update the fileds

我不知道此查询出了什么问题,但它没有给出任何错误并且不会更新该行。 ENDDATETIME字段数据类型为TIMESTAMP。

UPDATE TEST_BANK设置为STATUS ='RECEIVED',ENDDATETIME = '15 -JUN-15 11.21.06.000000000'WHERE ENDDATETIME = null;

在此处输入图片说明

见附件截图

我相信在Oracle中用于检查null的语法如下

 WHERE ENDDATETIME IS NULL

而不是

 WHERE ENDDATETIME = NULL

你可以试试这个

UPDATE TEST_BANK set STATUS = 'RECEIVED', ENDDATETIME = '16-JUN-15 11.21.06.000' WHERE ENDDATETIME is null ;

您的ENDDATETIME格式错误,因此未选中。

只需复制粘贴列值,然后将其粘贴到where子句中即可。

你能得到结果吗

从* TEST_BANK WHERE ENDDATETIME = null中选择*;

使用IS NULL代替= null

您无法比较NULL值。 您将需要“ IS”运算符。

UPDATE TEST_BANK 
   SET STATUS = 'RECEIVED', 
       ENDDATETIME = '16-JUN-15 11.21.06.000000000' 
 WHERE ENDDATETIME IS NULL ;

对此进行解释:假设Little先生和Large先生。 您不知道它们的高度(尺寸为null)。 现在,您可以肯定地说它们大小相同吗? 如果没有,则在比较时将不会“选择”它们。 因此,您需要一个比较函数来测试该值是否未知,这就是“ IS NULL”的作用。

运算符始终应用于数据,而oracle中的NULL是谓词。 因此它将不会与运算符一起使用。

每当您要处理NULL时,请始终使用IS NULL或IS NOT NULL。

具有比较条件的零

要测试是否为空,仅使用比较条件IS NULL和IS NOT NULL。 如果您将任何其他条件与null一起使用,并且结果取决于null的值,则结果为UNKNOWN。 因为null表示缺少数据,所以null不能等于或不等于任何值或另一个null。 但是,在评估DECODE函数时,Oracle认为两个空值相等。 请参阅DECODE以获取语法和其他信息。

Oracle还认为如果两个空值出现在复合键中,则它们相等。 也就是说,如果键的所有非空分量都相等,则Oracle会考虑两个相同的包含空值的复合键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM