我需要用DEL填写所有空字段。我不想修改数据库表,我只想在列中进行修改。下面是我现在想做的。基本上,如果这个值不是null,那么我想要132.00。如果它是空的,那么我想看到DEL。我正在研究SQL 2008 R2。谢谢你的帮助,非常感谢。
当前思想
CASE WHEN [Sales] IS NOT NULL
THEN CAST([Sales] AS decimal(10,0))
ELSE 'DEL'
END AS Sales错误
将数据类型varchar转换为数字时出错。
Warning: Null value is eliminated by an aggregate or other SET operation.发布于 2014-02-06 22:38:56
CASE WHEN [Sales] IS NOT NULL
THEN CAST(CAST([Sales] AS decimal(10,0)) AS NVARCHAR(1000))
ELSE CAST(DEL AS NVARCHAR(1000))
END AS Sales在case语句中,返回的数据类型必须是相同的。
编辑
若要返回字符串DEL (如果sales为null ),可以执行以下操作
CASE WHEN [Sales] IS NOT NULL
THEN CAST(CAST([Sales] AS decimal(10,0)) AS NVARCHAR(1000))
ELSE 'DEL'
END AS Sales发布于 2014-02-06 22:52:42
您不能将‘’文本存储在定义为容纳小数的列中。只是不可能。更重要的是,您不应该将十进制值存储在定义为保存字符串的列中。换句话说,这个要求是倒退和错误的。
您可以做的是像以前一样继续存储空数据和十进制数据,并返回字符串数据以供显示:
CASE WHEN [sales] IS NULL THEN 'DEL' ELSE Convert(varchar(13), [sales]) END然而,这也不理想,因为它迫使您的数据库进行转换工作,并意味着您的客户端代码开始使用字符串而不是数字。这里最好的选择是让数据库继续使用原始数据,并在客户端代码中进行调整,将NULL更改为'DEL‘。
https://stackoverflow.com/questions/21615474
复制相似问题