将float列类型转换为nvarchar(250)

时间:2015-08-20 14:06:07

标签: sql-server tsql sql-server-2008-r2

我有一个类型为float的列,我希望将其转换为类型nvarchar(250),以使此列更具动态性并允许任何字符集。

所以我想将其从float转换为nvarchar(250)。但我需要以下帮助:

  1. 进行这样的转换是否安全?它会导致任何数据丢失吗?
  2. 如何编写数据库脚本来修改列?
  3. 根据我自己的测试,我发现在将列类型更改为1302764后,某些使用浮点值为1.30276e+006的项目的值将为“nvarchar(250)” 。为什么会这样做?

1 个答案:

答案 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