【发布时间】:2021-09-29 02:54:53
【问题描述】:
我创建了一个数据库并意识到犯了一个错误,其中一大堆表中都有nvarchar(255) 数据类型。他们应该是日期时间。我正在尝试通过运行一个简单的代码来修改所有这些。
首先我运行下面的代码来识别所有表和相关的列名,其中包含“日期”一词,因为我知道这些是需要更改数据类型的列:
select *
from MyDatabase.INFORMATION_SCHEMA.COLUMNS c
where c.COLUMN_NAME like '%date%'
我查看了列表并确认所有列中都没有任何数据。只有其中一些有 NULL 。如果需要,我可以删除这些数据。返回列表中也只有 3 个不能为 Null;其余的都可以为 Null。如果重要的话,我可以手动修改不可为空的。
我想像运行这样的代码:
select *
from MyDatabase.INFORMATION_SCHEMA.COLUMNS c
where c.COLUMN_NAME like '%date%' and c.IS_NULLABLE = 'yes'
ALTER COLUMN c.COLUMN_NAME LIKE '%date%' DATETIME [NULL] -- for the Nullable items
通过上面的代码,我尝试使用以下链接中的逻辑: How do you change the datatype of a column in SQL Server?
不过,我知道我上面的实现是不正确的。谁能帮助我以正确的方式?提前致谢
【问题讨论】:
-
检查这个问题/答案(你应该在问这个问题之前找到它)是否对你有帮助:Dynamically Alter column datatype from nvarchar to decimal if a condition is satisfied sql
-
你用的是什么sql数据库服务?
-
SQL Server Management Studio v18.5