修改列长度,导致数据截断,如何解决?

crazyflower 2007-03-01 04:41:18
表A中的F1列原来长度为64,类型为nvarchar
现在执行以下语句修改F1列的长度:
alter table A alter column F1 nvarchar(32)
结果数据库报错,说将截断二进制,语句执行失败。

原因就是缩短了该列的长度。
但是现在我就是要把该列的长度缩短,怎么能不让数据库报错误,又能缩短该列的长度呢?

在企业管理器里是可以执行的,但是我要用SQL完成,请问该怎么做?
谢谢各位
...全文
279 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
paoluo 2007-03-01
  • 打赏
  • 举报
回复
我測試了,沒有GO也沒有問題
crazyflower 2007-03-01
  • 打赏
  • 举报
回复
Update A Set F1 = Left(F1, 32)
go
alter table A alter column F1 nvarchar(32)
go
当中最好有个GO
crazyflower 2007-03-01
  • 打赏
  • 举报
回复
谢谢,问题解决了。
paoluo 2007-03-01
  • 打赏
  • 举报
回复
huran88(我要做几年编程民工) ( ) 信誉:100 Blog 2007-03-01 16:59:01 得分: 0


楼上的方法要是能用,那还不如把数据全删了再改咧,
数据都截了还有啥用?


--------------

看看樓主的回復再說話




crazyflower(小狂花,学习中……) ( ) 信誉:100 Blog 2007-3-1 16:51:48 得分: 0



你原來長度的超過32的數據怎麼處理?

只要前32個字符?
---------------------
原来超过32的没有关系,直接截断,只要保留前32位就可以了



huran88 2007-03-01
  • 打赏
  • 举报
回复
楼上的方法要是能用,那还不如把数据全删了再改咧,
数据都截了还有啥用?
paoluo 2007-03-01
  • 打赏
  • 举报
回复
這樣試試

Update A Set F1 = Left(F1, 32)
alter table A alter column F1 nvarchar(32)
crazyflower 2007-03-01
  • 打赏
  • 举报
回复
你原來長度的超過32的數據怎麼處理?

只要前32個字符?
---------------------
原来超过32的没有关系,直接截断,只要保留前32位就可以了
crazyflower 2007-03-01
  • 打赏
  • 举报
回复
在企业管理器里操作吧
-------------
呵呵,我需要用SQL语句完成这个功能,企业管理器能做的,用SQL语句应该也能完成。
paoluo 2007-03-01
  • 打赏
  • 举报
回复
你原來長度的超過32的數據怎麼處理?

只要前32個字符?
crazyflower 2007-03-01
  • 打赏
  • 举报
回复
有数据,而且有的超过32长度。
houyichong 2007-03-01
  • 打赏
  • 举报
回复
在企业管理器里操作吧
huran88 2007-03-01
  • 打赏
  • 举报
回复
这个字段里有数据吗?

34,576

社区成员

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

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