SQL Server 데이터베이스의 모든 테이블에서 특정 유형의 모든 열 찾기


84

NTEXTSQL Server 데이터베이스의 모든 테이블에서 특정 유형 (예 :)의 모든 열을 찾으려면 어떻게 해야합니까?

SQL 쿼리를 찾고 있습니다.

답변:


120

다음 쿼리를 사용하여 필드를 반환 할 수 있습니다.

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

3
여기에는 뷰도 포함됩니다
Daniel

1
이것은 Azure SQL (2018 년 8 월)에서도 작동하며 NText가 더 이상 사용되지 않기 때문에 열을 nvarchar (max)로 변환하는 데 사용했습니다. alter table [tablename] alter column [columnname] nvarchar(max). LEN(..)ntext가 아닌 nvarchar와 함께 등을 사용할 수 있습니다 .
JP Hellemons

보기를 포함하지 않으려면 @Daniel, information_schema.tables에 대한 내부 조인, 다음과 같이 :INNER JOIN INFORMATION_SCHEMA.TABLES t ON c.TABLE_NAME = t.TABLE_NAME AND t.TABLE_TYPE = 'BASE TABLE'
Mike P.

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'

7

또한 시도 할 수 있습니다

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

시스템보기를 사용할 수 있습니다 INFORMATION_SCHEMA.COLUMNS. data_type열은 당신을 위해 무엇을 찾고있다.


2

이진 데이터 / 파일을 저장할 수있는 모든 테이블을 찾기 위해 다음 문을 사용했습니다.

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' )
            )
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.