我不知道这个查询有什么问题,但它没有给出任何错误,也没有更新行。 ENDDATETIME字段数据类型是TIMESTAMP。
UPDATE TEST_BANK设置STATUS =' RECEIVED',ENDDATETIME =' 16-JUN-15 11.21.06.000000000' WHERE ENDDATETIME = null;
答案 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会认为相同的两个复合键包含空值。