【发布时间】:2013-01-02 10:59:19
【问题描述】:
我有一个存储过程,它使用一系列临时表来提取数据、格式化然后插入到新表中。我知道这没有意义,但我正在尝试将 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]
这甚至可能吗? 感谢您的帮助。
【问题讨论】:
-
post整个sql语句,不仅如此
-
您可以在转换前使用
IsNumeric()尝试确定字符串是否包含有效数字。请注意,它有些乐观。 (奇怪的是,标题中的转换似乎与所示 SQL 中的相反。) -
你的列
[L/C Amount]是什么数据类型?
标签: sql-server tsql sql-server-2005 stored-procedures