条件更新语句

时间:2020-01-27 22:11:39

标签: sql sql-server sql-update

我有一个将CSV文件转储到临时表中的过程,然后我将数据格式化以放入实际表中。

我遇到了一个问题,有时某些值会以科学计数法出现,并且我的表格设置为DECIMAL(13,9)。本质上,我想做的是将科学计数法中的任何值都更新为0,因为它们太低了,在这种情况下也可能为0。

有9列可能具有这种科学记号,而且我知道我只有9条更新语句可以一次更新每一列。如果有必要,我可以这样做,只是认为某人可能有个更好的主意。

所以,我的问题是:有没有一种方法可以用一条语句更新所有这9列?

这是数据集:

SELECT Value, MyPropOccupancy, CompSetOccupancy, IndexOccupancy,
       MyPropADR, CompSetADR, IndexADR, MyPropRevPar, CompSetRevPar, IndexRevPar
    FROM #fileColumnsChanges

enter image description here

因此,在这种情况下,我想将CompSetOccupancy(年初至今)和CompSetADR(连续12个月)更新为0。

1 个答案:

答案 0 :(得分:0)

您只能在这里写9个'setters'UPDATE。如果该临时表中的数字值基于(n)varchar,则需要在重新设置实际值之前将其考虑在内。下面我以0.0001作为示例阈值:

UPDATE
  #fileColumnsChanges
SET
  CompSetOccupancy = IIF(CAST(CompSetOccupancy AS FLOAT) < 0.0001, 0, CompSetOccupancy)
, CompSetADR = IIF(CompSetADR AS FLOAT) < 0.0001, 0, CompSetADR);

否则,您可以省略CAST

  CompSetOccupancy = IIF(CompSetOccupancy < 0.0001, 0, CompSetOccupancy)

显然,您必须用其他字段修改UPDATE

PS 如果您向我们展示实际的#table中有什么/有什么,它将有助于回答此类问题。