为什么oracle DB不更新fileds

时间:2015-06-26 11:31:17

标签: sql database oracle

我不知道这个查询有什么问题,但它没有给出任何错误,也没有更新行。 ENDDATETIME字段数据类型是TIMESTAMP。

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

enter image description here

See the attached screenshot

5 个答案:

答案 0 :(得分:5)

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

 WHERE ENDDATETIME IS NULL

而不是

 WHERE ENDDATETIME = NULL

答案 1 :(得分:2)

你可以试试这个

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

答案 2 :(得分:2)

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

只需复制粘贴列值,然后将其粘贴到where子句中..它将起作用

您能否获得结果

从TEST_BANK中选择* WHERE ENDDATETIME = null;

使用IS NULL而不是= null

答案 3 :(得分:1)

您无法比较NULL值。你需要“IS”操作符。

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

解释一下: 假设Little先生和Large先生。你不知道它们有多高(大小为空)。现在你可以肯定地说它们的大小相同吗? 如果不是,那么在比较时它们将不会被“选中”。 因此,您需要一个比较函数来测试值是否未知,这就是“IS NULL”的作用。

答案 4 :(得分:1)

运算符始终应用于数据,而NULL是oracle中的谓词。所以它不会与运营商合作。

当你想要处理NULL时,总是使用IS NULL或IS NOT NULL。

有比较条件的空白

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

如果它们出现在复合键中,Oracle也会认为两个空值相等。也就是说,如果密钥的所有非空组件都相等,Oracle会认为相同的两个复合键包含空值。

相关问题