Tìm tất cả các cột thuộc một loại nhất định trong tất cả các bảng trong cơ sở dữ liệu SQL Server


84

Làm cách nào để tôi có thể tìm thấy tất cả các cột thuộc một loại nhất định (ví dụ NTEXT) trong tất cả các bảng trong cơ sở dữ liệu SQL Server?

Tôi đang tìm một truy vấn SQL.

Câu trả lời:


120

Bạn có thể sử dụng truy vấn sau để trả về các trường

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

3
Điều này cũng sẽ bao gồm các lượt xem
Daniel

1
Điều này cũng sẽ hoạt động trên Azure SQL (tháng 8 năm 2018) và tôi đã sử dụng nó để chuyển đổi các cột thành nvarchar (max) vì NText sẽ không được dùng nữa. alter table [tablename] alter column [columnname] nvarchar(max). Bạn có thể sử dụng LEN(..)vv với nvarchar chứ không phải ntext.
JP Hellemons

@Daniel nếu bạn không muốn lượt xem bao gồm, hãy tham gia bên trong trên information_schema.tables, như vậy:INNER JOIN INFORMATION_SCHEMA.TABLES t ON c.TABLE_NAME = t.TABLE_NAME AND t.TABLE_TYPE = 'BASE TABLE'
Mike P.

14

Bạn sẽ cần INFORMATION_SCHEMA. Hãy thử một cái gì đó như:

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'

7

Ngoài ra bạn có thể thử

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

2

Bạn có thể sử dụng chế độ xem hệ thống INFORMATION_SCHEMA.COLUMNS. Các data_typecột có những gì bạn đang tìm kiếm.


2

Tôi đã sử dụng Tuyên bố sau để tìm tất cả các bảng có thể chứa dữ liệu / tệp nhị phân.

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' )
            )
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.