导入Excel数据到数据库中,电话变成科学记数法形式:1.89 +E-10


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

 SQL Server中的数值类型分为两种, 一种是精确的数值类型,具体的数据类型有:bit、tinyint、smallint、int、bigint、smallmoney、money和decimal,这些数据类型能够精确的表明某以数值; 另一种是近似的数值类型,具体就是float和real。浮点数据为近似值 float 或 real 转换为字符数据时的 style 值: 0(默认值)最大为 6 位数。根据需要使用科学记数法。 1 始终为 8 位值。始终使用科学记数法。 2 始终为 16 位值。始终使用科学记数法。 解决方案:1,因float,real是近似值,超出6位以上就会用科学计数法,故可将其转成精确值就可显示。 convert(varchar(20),convert(bigint,@tel)) 2,导入 EXCEL时 SQL SERVER会将类型为数字的列转成float,出现科学计数法,故可将Excel中数据列转成文本类型再导入。 注:若导入的数据有文字时则导入的结果会为NULL, 故综合处理方案如下:    数据入SQLServer过程中,SQLServer会做出判断,是采用float型还是nvarchar型来接受数据,SQLServer采用哪一型取决于将要导入的数据中本身具有哪一型的记录数比例多。故每行先转换为字符,直接设置单元格的格式方式是不可以的,    1, (1)将excel数据copy到editplus, ctrl+ h 正则匹配\n 为\n' 这样每行都转为了字符形式。或加一列执行:="'"&D2函数     (2)导入数据库     (3)去掉加入的': update a  set a.tel = replace(tel,'''','') from temptel a  2,右键设置单元格式,数字,小数位数改为0