更新集不向字段添加任何内容

时间:2014-04-30 22:14:26

标签: sql sql-update teradata

我仍然在掌握SQL。我花了一些时间并设法构建以下查询。

然后我选择COUNT(*)WHERE activePU = 1,结果为0.我知道应该有数千个。

我查看了视图,发现activePU下的所有单元格都是空白的。

每条记录应该有0或1,不应该是空的。但他们都是空的。从我的语法中可以看出为什么?

我怀疑问题出在我的语法上,因为我的经验不足。

UPDATE rdmatblsandbox.TmpNIMSalesForceDB
SET activePU = 
                CASE WHEN
                (TmpNIMSalesForceDB.SUBSCRIPTION_END_DATE > CURRENT_DATE OR TmpNIMSalesForceDB.SUBSCRIPTION_END_DATE IS NOT NULL) AND
                TmpNIMSalesForceDB.SERVICE_ACTIVATION_DATE < CURRENT_DATE AND
                TmpNIMSalesForceDB.ROGERS_BILLING_SYSTEM IS NOT NULL
                THEN 1
                ELSE 0
                END

1 个答案:

答案 0 :(得分:2)

&#34;字段类型为varchar(1)&#34;

如果它是一个VarChar,你应该写一个字符串而不是一个数字,&#39; 0&#39; 0和&#39; 1&#39;而不是0和1。

从byteint到varchar的自动类型转换会导致&#39; 0&#39;然后将其默默地截断为&#39; &#39;

但你为什么要使用VarChar(1)? VarChars有两个字节的开销,所以最好使用CHAR(1)。或者使用BYTEINT或DECIMAL(1),两者都需要一个字节进行存储,你不会遇到自动类型转换的问题...