gpt4 book ai didi

sql-server - 在 SQL Server 中将列类型从 TinyInt 转换为 Int

转载 作者:行者123 更新时间:2023-12-03 23:48:35 28 4
gpt4 key购买 nike

我有一个包含很多表的数据库。数百列的类型为 TinyInt .我需要将它们全部转换为 Int .是否可以使用存储过程来做到这一点?

最佳答案

对此没有简单的解决方案。

最简单的方法是拥有一个可以运行的 T-SQL 脚本,该脚本将生成 T-SQL ALTER TABLE .... ALTER COLUMN ...脚本作为输出(在每个数据库级别),然后您可以将其复制并粘贴到 SQL Server Management Studio 中。

就像是:

SELECT
ColName = c.Name,
SchemaName = s.Name,
TableName = t.Name,
AlterCommand = 'ALTER TABLE ' + QUOTENAME(s.Name) + '.' + QUOTENAME(t.Name) +
' ALTER COLUMN ' + QUOTENAME(c.name) + ' INT' +
CASE WHEN c.is_nullable = 1 THEN ' NULL;' ELSE ' NOT NULL;' END
FROM
sys.columns c
INNER JOIN
sys.types ty ON ty.system_type_id = c.system_type_id
INNER JOIN
sys.tables t ON t.object_id = c.object_id
INNER JOIN
sys.schemas s ON s.schema_id = t.schema_id
WHERE
ty.name = 'tinyint'

另一种选择是将此代码包装到一个过程中,该过程将创建一个 ALTER TABLE ... ALTER COLUMN ... SQL语句作为动态SQL语句,然后每一条执行,遍历所有 TINYINT列。但同样:这将在每个数据库级别上进行。

或者,如果您可以从头开始创建这些数据库,您也可以编写 CREATE TABLE 的脚本。将所有表的脚本写入文本文件,替换 TINYINTINT在文本编辑器中,然后针对新的数据库/服务器再次运行这些创建脚本。

关于sql-server - 在 SQL Server 中将列类型从 TinyInt 转换为 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51371718/

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