如何强制修改字段类型,不要报错。

reasonchan 2008-04-22 11:41:10
如:我要将表A字段F1原来是varchar(20)改为varchar(10),但用如下语句:
ALTER TABLE A ALTER COLUMN F1 varchar(10)
会提示“将截断字符串或二进制数据。语句已终止。“我要的效果是,在修改类型的同时直接截断字段中的值,不用提示错误。
请问有什么设置可以使它强制执行吗?

...全文
146 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kakajya 2008-04-22
  • 打赏
  • 举报
回复
强制执行那你原来的数据怎么办》??
不报错才怪
zccmy22 2008-04-22
  • 打赏
  • 举报
回复
推荐个方法。
1.新建个列。

2.update tb set col1 = convert(varchar(10),col)

3.删掉原来的列。

4.建一个新的原来的列

5.update tb set col = col1

ok。就结束了。
cson_cson 2008-04-22
  • 打赏
  • 举报
回复
1.将数据转成符合你需要转换的数据长度要求。
2.转换数据类型。
pt1314917 2008-04-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 reasonchan 的回复:]
还有其他方法吗?同样这样的转换还有可能是其他类型之间的转换。
[/Quote]

表中已经有数据的长度超过varchar(10)了,你现在将字段长度改为varchar(10),不报错才怪。。。
pt1314917 2008-04-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dawugui 的回复:]
古人云:一心不能两用.
望楼主明确之.
[/Quote]

哈哈。。
还有个办法。就是直接
truncate table 表名
ALTER TABLE A ALTER COLUMN F1 varchar(10)

切记:不可轻易模仿。呵呵```
dawugui 2008-04-22
  • 打赏
  • 举报
回复
古人云:一心不能两用.
望楼主明确之.
reasonchan 2008-04-22
  • 打赏
  • 举报
回复
还有其他方法吗?同样这样的转换还有可能是其他类型之间的转换。
dawugui 2008-04-22
  • 打赏
  • 举报
回复
update set f1 = left(f1,10)
ALTER TABLE A ALTER COLUMN F1 varchar(10)
龙龙16 2008-04-22
  • 打赏
  • 举报
回复
数据备份一下,表清空,再截断

22,208

社区成员

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

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