-1

我有一个存储过程,它使用一系列临时表来提取数据、格式化然后插入到新表中。我知道这没有意义,但我正在尝试将 null 格式化为“”(空白)或“-”破折号。这是公元前。零值实际上代表了实际余额。当我这样做时,我不断收到将 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]

这甚至可能吗?感谢您的任何帮助。

4

1 回答 1

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]
于 2013-01-18T17:18:22.010 回答