我在sql server 2016上执行以下查询时出现算术溢出错误。
"select convert(varchar(20), cast('0' as float), 3)"
相同的查询在sql server 2014上运行正常。
答案 0 :(得分:1)
CONVERT(data_type [(length)],表达式 [,style] )
sql 2014中的相同的查询工作正常 在sql server 2014上。
风格
sql 2016中的其他值处理为0。 最多6位数。在适当的时候使用科学记数法。
样式
3 始终为17位数。用于无损转换。使用此样式,每个不同的浮点数或实际值都可以保证转换为 distinct字符串。适用于:Azure SQL数据库,从SQL Server 2016开始。
https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql
答案 1 :(得分:1)
您收到此错误原因casting '0' to float of style 3 returning 23 charter value which is unable to convert to varchar of length 20 only
。
尝试类似的事情,
select convert(varchar(23), cast('0' as float), 3)
或者
select convert(varchar(max), cast('0' as float), 3)