作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将数据库列从整数更改为字符串/文本,但我不知道如何进行。
此列用于存储标识号,但最近 ID 格式发生了更改,现在 ID 也包含 ASCII 字符(因此,通过此更改,新 ID 无法存储为整数)。
我正在更新的应用程序是用 Delphi 7 编写的,并使用 SQL Server 库的 odbcexpress 组件。
是否可以使用ALTER TABLE
来实现此目的?或者是否需要将数据作为字符串复制到新列,删除旧列,并将该列重命名为旧名称?
你能举个例子来说明我该如何做到这一点吗?我对 SQL Server 的工作原理不是很熟悉。
谢谢!
最佳答案
ALTER TABLE
这正是您想要做的。
您的 SQL 可能如下所示:
ALTER TABLE dbo.MyTable ALTER COLUMN MyColumn VARCHAR(20) NOT NULL;
请注意,如果您有引用此列的列,则还必须更新这些列,通常是暂时删除外键约束,进行更改,然后重新创建外键约束。
不要忘记更改任何依赖项或下游项,例如存储过程或 Delphi 代码中的任何变量。
与评论相关的其他信息(谢谢大家):
此更改列操作将保留数据,因为它将隐式转换为新类型。只要您的 varchar 足够宽,至少可以容纳最大的转换值, int 转换为 varchar 就没有问题。为了保证整数的安全性,我经常使用 varchar(11)
或更大的值来处理最宽的 int 值:负二十亿。
关于sql-server - 如何在 SQL Server 中将列的数据类型从整数更改为文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27851810/
我是一名优秀的程序员,十分优秀!