如何让Excel导入进数据库的列变成varchar型(或其他字符型)?

yaoguicheng 2014-07-05 04:42:24
通过SQLServer Management Studio进行Excel导入,导入后在数据库中默认为float,无法进行匹配工作(匹配的原表为字符型);
我通过修改导入数据库的临时表的列类型,但没有效果。
截图如下:
1、这是Excel导入系统内临时表的列结构:

2、这是临时表的内容:


当我进行匹配时:
select * from _test2 
left join 物料 wl on wl.材料编码=_test2.物资编号

提示如下:
引用
消息 8114,级别 16,状态 5,第 1 行
从数据类型 varchar 转换为 float 时出错。


请教如何设置,可以让Excel导入进系统的列,默认为字符型?
...全文
2560 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_31486975 2016-12-30
  • 打赏
  • 举报
回复
偶然遇到这个问题。 我的excel某列是数字和字母混杂的,导入时也遇到了float转为varchar的问题。 我是这样解决的,我只用来展示文本,所以直接将excel中的这一列全部转为了文本格式。 点击excel中的转换列,菜单中点选数据-----分列-----下一步---下一步---文本---完成--保存。 再次导入即可。转为了文本格式。详情搜索 excel中某列数字转文字
yaoguicheng 2014-07-07
  • 打赏
  • 举报
回复 1
感谢以上各位指点: 1、修改Excel列格式为文本,导入后仍然为float; 2、使用cast强制类型转换,会有原帖中的提示,无法进行; 3、修改该列前8行为文本:数据前面加单引号,没有尝试。 公司研发给解决的,用的是自己开发的导入工具。
无涯大者 2014-07-06
  • 打赏
  • 举报
回复
在SQL中强制类型转换下

cast(column_name as varchar(20))
cast(column_name as float)
之类的。。
习惯性蹭分 2014-07-06
  • 打赏
  • 举报
回复
在excel中设置列的数据类型为文本,如果还是不行的话,在前8行的该列的数据中前面加 (')分号强制类型为文本。
  • 打赏
  • 举报
回复
不要使用float类型,他会使数据失真。。例如,你输入的是1可能系统保存为1.0000000000000000000000000000000001 这就是你无法匹配的原因,如何是唯一,通过此键连接其他表,设置为主键,类型为int
  • 打赏
  • 举报
回复
记得 Excel有个校验输入类型功能。
xzb001 2014-07-05
  • 打赏
  • 举报
回复
只能直接在Excel,把整列的单元格格式设置为文本,强制指定该列为字符型。 这是因为如果单元格格式是常规的话,Excel会根据列的内容,自动判断列的数据类型,在这里Excel把该列自动判断为数字,所以导入有问题。

34,836

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧