alter table 出现:将截断字符串或二进制数据 如何解决?

handsome1234 中南大学 信息部经理  2015-10-19 11:31:57
alter table 出现:将截断字符串或二进制数据 如何解决?
alter table _xtm12_bak120727 ALTER column wpsxlb7 char(20);
将截断字符串或二进制数据
...全文
182 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
handsome1234 2015-10-20
最后: alter table xtm12_bak120727 add NEWFIELD2 char(20) UPDATE xtm12_bak120727 SET NEWFIELD2=CONVERT(char(20),SUBSTRING(wpsxlb28,1,19)) WHERE LEN(wpsxlb28)>19 ALTER TABLE xtm12_bak120727 DROP COLUMN NEWFIELD 结贴
回复
道玄希言 2015-10-20
如果你确定你需要將字段变短,那就不用管这提示,直接确定,就OK了。
回复
薛定谔的DBA 2015-10-20
自动截断字符
set ansi_warnings off
回复
Tiger_Zhao 2015-10-20
SUBSTRING 只是对字符串内容进行截取、但是字段类型的长度还是不变的。
所以无论做不做 SUBSTRING,按类型长度分析始终是长字段更新到短字段中。
用 CONVERT 对 SUBSTRING 的结果做个类型转换。
回复
handsome1234 2015-10-20
大家还有何良策?我尝试用left代替substring也还是同样的错误。
回复
handsome1234 2015-10-20
alter table bak120727 add NEWFIELD2 char(20) UPDATE bak120727 SET NEWFIELD2= SUBSTRING(wpsxlb28,1,18) WHERE LEN(wpsxlb28)>18 第二句报错: 将截断字符串或二进制数据。 语句已终止。
回复
guguda2008 2015-10-20
1.备份表 2.在原表建目标长度的新列,名称随意 3.UPDATE旧列值到新列,这里处理超长的情况 4.删除原列 5.新列改名成原列名 6.检查新列没问题后,删除备份表
回复
guguda2008 2015-10-20
1.备份表 2.在原表建目标长度的新列,名称随意 3.UPDATE旧列值到新列,这里处理超长的情况 4.删除原列 5.新列改名成原列名 6.检查
回复
专注or全面 2015-10-20
你修改的列长度比原来变短了,或者修改后的长度容纳不下目前最长的数据
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-10-19 11:31
社区公告
暂无公告