我有一个类型为float
的列,我希望将其转换为类型nvarchar(250)
,以使此列更具动态性并允许任何字符集。
所以我想将其从float
转换为nvarchar(250)
。但我需要以下帮助:
根据我自己的测试,我发现在将列类型更改为1302764
后,某些使用浮点值为1.30276e+006
的项目的值将为“nvarchar(250)
” 。为什么会这样做?
答案 0 :(得分:0)
1
SQL Server将转换您的数据, BUT 存储过程或使用float列的非物化视图可能会出现问题。想象一下像这样的代码:
浮动myresult - > “我们在存储过程中的浮点变量”
float1 = “从表中选择float_column,其中value = x” - > “1.23”
float2 = “从表中选择float_column,其中value = y” - > “2.46”
myresult = float1 + float2 - > “3.69”
在最坏的情况下,SQL服务器会给你一个错误(例如“不能在NVARCHAR上使用operator +”或“myresult”将转换为nvarchar,这会给你结果“1.232.46”(string concat)
在最好的情况下,SQL Server会将nvarchar隐式转换为float。
请检查存储过程或小程序是否正在使用这些字段!
2
alter table **TableName**
alter column **ColumnName** nvarchar(250)
编辑: 如前所述,使用STR() - > convert float into varchar in SQL server without scientific notation