ค้นหาคอลัมน์ทั้งหมดของบางประเภทในตารางทั้งหมดในฐานข้อมูล SQL Server


85

ฉันจะค้นหาคอลัมน์ทั้งหมดในบางประเภท (ตัวอย่างNTEXT) ในตารางทั้งหมดในฐานข้อมูล SQL Server ได้อย่างไร

ฉันกำลังมองหาแบบสอบถาม SQL

คำตอบ:


122

คุณสามารถใช้แบบสอบถามต่อไปนี้เพื่อส่งคืนฟิลด์

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

3
รวมถึงวิวด้วย
Daniel

1
สิ่งนี้จะใช้ได้กับ Azure SQL (สิงหาคม 2018) และฉันใช้เพื่อแปลงคอลัมน์เป็น nvarchar (สูงสุด) เนื่องจาก NText จะถูกเลิกใช้ alter table [tablename] alter column [columnname] nvarchar(max). คุณสามารถใช้LEN(..)ฯลฯ กับ nvarchar ไม่ใช่ ntext
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.