2011-10-03 36 views
0

我对SQL查询比较陌生。SQL-识别可为空的值

我有我的SQL数据库(1500)大量表的

我的问题如下:

我需要确定是从哪个有默认值的所有表空列?

我怎么能去所有的表?

任何帮助或相同的教程也将非常有帮助。

谢谢

回答

2

您可以使用INFORMATION_SCHEMA得到这个数据,列“COLUMN_DEFAULT”和“IS_NULLABLE”会给你你所需要的。

SELECT * 
FROM information_schema.columns c with (Nolock) 
+0

你好,谢谢你。有一个问题。你为什么指定“with(nolock)”?我为我的无知道歉,但我没有得到它。 – JJunior

+0

这不是必需的,但它使查询在检索数据时锁定表。 – msmucker0527

+0

谢谢你的解释。 – JJunior

1

使用SQL Server的自描述的特点: -

SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS 
WHERE IS_NULLABLE = 'YES' 
OR COLUMN_DEFAULT IS NOT NULL 
1
SELECT 
    OBJECT_NAME(c.object_id), * 
FROM 
    sys.columns c 
    JOIN 
    sys.default_constrainst dc ON c.columnid = dc.parent_column_id AND c.object_id = dc.parent_object_id 
WHERE 
    c.is_nullable = 1