gpt4 book ai didi

sql - 在 SQL Server 中,将 int 类型的列更改为 text

转载 作者:太空狗 更新时间:2023-10-30 01:46:40 25 4
gpt4 key购买 nike

我想将 SQL Server 中的列从 int 类型更改为 text 类型,同时保持列名称。该列的表有很多数据,我不想丢失它。 SQL Server 似乎不支持从 int 到 text 的隐式或显式转换,否则这将非常简单。那么,您将如何仅使用 SQL 来完成它?

最佳答案

由于 MS SQL Server(与大多数数据库一样)不支持直接更改现有列的类型,因此您必须分步进行。我过去解决此类问题的方法是(假设您的表名为“foo”,您的列名为“bar”):

ALTER TABLE foo ADD COLUMN tempbar text;
UPDATE foo SET tempbar = cast(cast(bar as varchar) as text);
ALTER TABLE foo DROP COLUMN bar;
ALTER TABLE foo ADD COLUMN bar text;
UPDATE foo SET bar = tempbar;
ALTER TABLE foo DROP COLUMN tempbar;

(某些 SQL 语法可能已关闭,自从我上次这样做已经一年了,在不同的工作,所以我无法访问 MS SQL Server 或源代码。你还必须做如果您的专栏上有索引,则更多内容。)

支持 Donnie用于转换语法。

[编辑]

Tom H.建议使用 sp_renametempbar 重命名为 bar 的存储过程(而不是步骤 4-6)。这是一个特定于 MS SQL Server 的解决方案,可能适用于许多情况。我描述的解决方案将在任何 SQL 数据库上工作(通过语法修订),无论版本如何。在我的例子中,我处理的是主键和外键,而不仅仅是一个字段,所以我必须仔细地对所有操作进行排序,并且可以跨多个版本的 MS SQL Server 移植——明确的工作对我有利。

关于sql - 在 SQL Server 中,将 int 类型的列更改为 text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1833540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com