在oracle中使用更新查询时更新了0行

时间:2017-09-04 12:05:41

标签: sql oracle sql-update dml

当我尝试使用update语句更新具有字符数据类型的列时。它说0行更新并且不会抛出任何错误。由于列的数量很多,我尝试使用where子句使用特定列...它更新行。

问题是当所有列都用于更改值时,它会返回0行更新。我必须在vba代码/工具中自动化它,以便它可以使用所有行进行更新。我确定了用于未更新值的列,但没有返回错误。

它只说:

0 rows updated

但该特定列(数据类型...十进制)有什么问题。

请帮忙。我搜索了整个互联网但没有结果。

1 个答案:

答案 0 :(得分:0)

如果您尝试更新数据库中的特定值而只更新该特定值,则可能会出现舍入问题。这意味着您看到的值不是存储的确切值。

因此,您可以尝试使用特定范围更新它。

  1. 首先选择您要更新的内容:

    select rowid from table_1 
     where val_x between <x>-<upsilon> and <x>+<upsilon>;
    
  2. 如果您只有一个值,则更新 ;

    update table_1 set val_x = <new_val>
     where val_x between <x>-0.001 and <x>+0.001
    ;
    
  3. (否则,如果超过1个值,则<upsilon>减少到0.0001等等。)

    希望有所帮助