首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条件更新语句

条件更新语句
EN

Stack Overflow用户
提问于 2020-01-28 06:11:39
回答 1查看 35关注 0票数 0

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

我遇到了一个问题,有时其中一个值出现在科学记数法中,而我的表被设置为DECIMAL(13,9)。本质上,我想要做的是将科学记数法中的任何值更新为0,因为它们太低了,在这个用例中可能也是0。

有9列可能具有这种科学表示法,我知道我可能只有9条update语句,每次更新每列中的一条。如果有必要,我可以这么做,只是觉得有人可能有比这更好的主意。

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

以下是数据集:

代码语言:javascript
复制
SELECT Value, MyPropOccupancy, CompSetOccupancy, IndexOccupancy,
       MyPropADR, CompSetADR, IndexADR, MyPropRevPar, CompSetRevPar, IndexRevPar
    FROM #fileColumnsChanges

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-28 06:49:25

你可以在这里用9个‘UPDATE’编写一个setter。如果临时表中数值基于(n)varchar,则需要在重置实际值之前考虑这一点。下面我使用0.0001作为示例阈值:

代码语言:javascript
复制
UPDATE
  #fileColumnsChanges
SET
  CompSetOccupancy = IIF(CAST(CompSetOccupancy AS FLOAT) < 0.0001, 0, CompSetOccupancy)
, CompSetADR = IIF(CompSetADR AS FLOAT) < 0.0001, 0, CompSetADR);

否则,您可以直接省略CAST

代码语言:javascript
复制
  CompSetOccupancy = IIF(CompSetOccupancy < 0.0001, 0, CompSetOccupancy)

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

另外,如果你能向我们展示一下实际的#表中的内容,它将有助于回答这样的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59939630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档