在案例中将Varchar转换为数字时出错

时间:2013-01-18 17:03:48

标签: sql-server tsql sql-server-2005 stored-procedures

我有一个存储过程,它使用一系列临时表来提取数据,格式化然后插入到新表中。我知道它没有意义,但我试图将null格式化为''(空白)或' - '破折号。这是bc。零值实际上代表了一种真正的平衡。当我这样做时,我不断收到将varchar转换为数字的错误。

CASE 
WHEN ##TEMPTABLE.[Summary Category Definition] = 'In Storage' THEN '' 
WHEN ##TEMPTABLE.[L/C Amount] > 0 THEN ##TEMPTABLE.[L/C Amount] 
ELSE ''
END AS [L/C Amount]

我试过了:

CASE 
WHEN ##TEMPTABLE.[Summary Category Definition] = 'In Storage' THEN '' 
WHEN ##TEMPTABLE.[L/C Amount] > 0 THEN convert(varchar(20), ##TEMPTABLE.[L/C Amount]    )
ELSE ''
END AS [L/C Amount]

这甚至可能吗? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

除非[L/C Amount]列实际上已经是VARCHAR,否则我不明白为什么您的查询不起作用。在这种情况下,您应该更改您的声明:

CASE 
    WHEN ##TEMPTABLE.[Summary Category Definition] = 'In Storage' 
        THEN '' 
    WHEN ##TEMPTABLE.[L/C Amount] <> '0' 
        THEN CONVERT(VARCHAR(20), ##TEMPTABLE.[L/C Amount]) -- why is this necessary?
    ELSE '' 
END AS [L/C Amount]