在sql server 2016中,使用样式3浮动到varchar失败

时间:2017-10-25 08:47:45

标签: sql sql-server sql-server-2014 sql-server-2016

我在sql server 2016上执行以下查询时出现算术溢出错误。

"select convert(varchar(20), cast('0' as float), 3)"

相同的查询在sql server 2014上运行正常。

enter image description here

2 个答案:

答案 0 :(得分:1)

CONVERT(data_type [(length)],表达式 [,style]

  

相同的查询工作正常   在sql server 2014上。

sql 2014中的

风格

  

其他值处理为0。   最多6位数。在适当的时候使用科学记数法。

sql 2016中的

样式

  

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)