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

handsome1234 2015-10-19 11:31:57
alter table 出现:将截断字符串或二进制数据 如何解决?
alter table _xtm12_bak120727 ALTER column wpsxlb7 char(20);
将截断字符串或二进制数据
...全文
291 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
你修改的列长度比原来变短了,或者修改后的长度容纳不下目前最长的数据

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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