Sql server I';我在尝试纠正sql server 2016中的转换问题时遇到问题
我有一个case语句,其中我尝试对多个列int值求和,然后将求和的值格式化为“000000 15700+”,作为示例,但在SQL Server 2016中出现转换错误 以下是错误: 将varchar值“000000 15700+”转换为时失败 数据类型int 这是我的密码:Sql server I';我在尝试纠正sql server 2016中的转换问题时遇到问题,sql-server,tsql,Sql Server,Tsql,我有一个case语句,其中我尝试对多个列int值求和,然后将求和的值格式化为“000000 15700+”,作为示例,但在SQL Server 2016中出现转换错误 以下是错误: 将varchar值“000000 15700+”转换为时失败 数据类型int 这是我的密码: CASE WHEN x.Code = 'WRITPREM' AND x.[Description] = 'NEW POLICY' THEN RIGHT('00000000000' + CAST(REPLACE((su
CASE
WHEN x.Code = 'WRITPREM' AND x.[Description] = 'NEW POLICY' THEN RIGHT('00000000000' + CAST(REPLACE((sum(x.totalPolicy_BIN) + sum(x.totalPolicy_COL) + sum(x.totalPolicy_OTC) + sum(x.totalPolicy_PDM) + sum(x.totalPolicy_MED) +sum(x.totalPolicy_PIP) + sum(x.totalPolicy_REN) + sum(x.totalPolicy_TOW) + sum(x.totalPolicy_UBI) + sum(x.totalPolicy_UPD)),'.','') as varchar(12)) + '+',12)END as TEST
任何帮助/指导都将不胜感激。谢谢。您正在使用的一个字段
sum()
ing包含带“+”号的值。因此,SQL Server无法将该值转换为整数以sum()
。您似乎正在对非数字列应用该函数。因此,这些列中至少有一列包含意外数据。尝试删除一些sum()
列,以确定哪个列包含有问题的数据。理想情况下,您应该在每列上都有正确的数据类型,而不会遇到此问题。您已经反转了REPLACE和CAST命令。您应该将该值转换为字符串,然后替换小数点并在末尾添加加号,然后取该值的右(…,12)。您需要提供更多信息。查询所针对的表结构和一些示例数据。要添加的列的数据类型是什么。还提供整个查询,因为它可能是导致问题的其他原因您已反转了REPLACE
和CAST
命令。您应该CAST
将值转换为字符串,然后替换
小数点并在末尾加上加号,然后取该值的右侧(…,12)
。还有,问题:您真的想将小数点后的值与数字合并,还是想截断小数点处的值?这两种方法都是处理数字的有效方法,但我只是想确定您是否真的希望包含小数点后的数字。@LaughingVergil,谢谢您的帮助。这就是答案。感谢您的时间和帮助。