在SQL Server数据库的所有表中查找特定类型的所有列

时间:2012-03-13 04:11:44

标签: sql sql-server-2008

如何在SQL Server数据库的所有表中找到特定类型的所有列(例如NTEXT)?

我正在寻找SQL查询。

5 个答案:

答案 0 :(得分:104)

您可以使用以下查询返回字段

SELECT table_name [Table Name], column_name [Column Name]
FROM information_schema.columns where data_type = 'NTEXT'

答案 1 :(得分:14)

您将需要INFORMATION_SCHEMA。尝试类似:

SELECT c.* from INFORMATION_SCHEMA.columns c
INNER JOIN INFORMATION_SCHEMA.tables t ON t.table_name = c.table_name
WHERE c.data_type = 'int' AND t.table_type = 'base table'

答案 2 :(得分:6)

你也可以尝试

SELECT OBJECT_NAME(c.OBJECT_ID) TableName, c.name ColumnName
FROM sys.columns AS c
JOIN sys.types AS t ON c.user_type_id=t.user_type_id
WHERE t.name = 'ntext'
ORDER BY c.OBJECT_ID;
GO

答案 3 :(得分:2)

您可以使用系统视图INFORMATION_SCHEMA.COLUMNSdata_type列包含您要查找的内容。

答案 4 :(得分:2)

我确实使用以下Statement来查找可能包含二进制数据/文件的所有表。

SELECT 
    table_name 
FROM 
    INFORMATION_SCHEMA.TABLES T 
WHERE 
    T.TABLE_CATALOG = 'MyDatabase' AND 
    EXISTS ( 
        SELECT * 
        FROM INFORMATION_SCHEMA.COLUMNS C 
        WHERE 
            C.TABLE_CATALOG = T.TABLE_CATALOG AND 
            C.TABLE_SCHEMA = T.TABLE_SCHEMA AND 
            C.TABLE_NAME = T.TABLE_NAME AND 
            ( C.DATA_TYPE  = 'binary' OR
             C.DATA_TYPE  = 'varbinary' OR 
            C.DATA_TYPE  = 'text' OR
            C.DATA_TYPE  = 'ntext' OR
            C.DATA_TYPE  = 'image' )
            )