SQL Server:使所有允许为空的列无效

问题描述 投票:0回答:1

我们的数据库在SQL Server 2012上运行。我想清空一些不需要的数据,而不仅仅是删除该行。我无法使表中的所有列都为空,因为有些列已定义为“非空”。因此,我希望能找到一种方法来自动过滤它,或者根据它是否可为空或是否因某种原因而尝试/捕获,而不是通过名称手动指定允许空值的所有列。这样,我可以在任何给定的表上重用它。有什么想法吗?

[我看到sys.columns具有可以查询的is_nullableis_computed列,我只是不知道如何在我的更新语句中将它们全部包装在一起,说:“将表中的任何列都删去允许为空”。

编辑:例如,我正在使用AdventureWorks2014数据库进行测试。我可以运行以下查询,以查看哪些列允许为空且不进行计算:

select name as 'column' 
from sys.columns 
where is_nullable = 1 
  and is_computed = 0 
  and object_id = OBJECT_ID('HumanResources.Employee')

此外,我可以运行以下查询以使我手动指定的某些列无效:

update [AdventureWorks2014].[HumanResources].[Employee]
set OrganizationNode = NULL

我只是不知道如何组合它们。

sql-server tsql nullable
1个回答
0
投票

值得尝试使用系统视图information_schema.columns。

select *
, 'update ' + TABLE_SCHEMA + '.' + TABLE_NAME + ' set ' + COLUMN_NAME + ' = null'
from 
INFORMATION_SCHEMA.COLUMNS where IS_NULLABLE = 'YES'
© www.soinside.com 2019 - 2024. All rights reserved.