2017-09-04 388 views
0

当我尝试使用update语句更新包含字符数据类型的列时。它说0行更新并不会引发任何错误。由于列数很多,我尝试使用where子句使用特定的列...它在哪里更新行。在oracle中使用更新查询时更新了0行

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

它只是说:

0 rows updated

但那个特定列(数据类型...小数)有什么问题。

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

+2

显示查询和一些示例数据 – dbajtr

+0

这是所识别的列我不让更新。更新keyfigures2设置“Company Name”='chem5',其中“Gross Profit Margin”= 0.198871996076508; (P.S:表中没有主键) –

+0

请显示你曾经有过这个'0更新'的SQL查询... –

回答

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 
    ; 
    

(否则,如果超过1个值,减少<upsilon>0.0001等)

希望它能帮助