ฉันจะค้นหาคอลัมน์ทั้งหมดในบางประเภท (ตัวอย่างNTEXT
) ในตารางทั้งหมดในฐานข้อมูล SQL Server ได้อย่างไร
ฉันกำลังมองหาแบบสอบถาม SQL
ฉันจะค้นหาคอลัมน์ทั้งหมดในบางประเภท (ตัวอย่างNTEXT
) ในตารางทั้งหมดในฐานข้อมูล SQL Server ได้อย่างไร
ฉันกำลังมองหาแบบสอบถาม SQL
คำตอบ:
คุณสามารถใช้แบบสอบถามต่อไปนี้เพื่อส่งคืนฟิลด์
SELECT table_name [Table Name], column_name [Column Name]
FROM information_schema.columns where data_type = 'NTEXT'
alter table [tablename] alter column [columnname] nvarchar(max)
. คุณสามารถใช้LEN(..)
ฯลฯ กับ nvarchar ไม่ใช่ ntext
INNER JOIN INFORMATION_SCHEMA.TABLES t ON c.TABLE_NAME = t.TABLE_NAME AND t.TABLE_TYPE = 'BASE TABLE'
คุณจะต้องใช้ 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'
นอกจากนี้คุณสามารถลอง
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
INFORMATION_SCHEMA.COLUMNS
คุณสามารถใช้มุมมองระบบ data_type
คอลัมน์มีสิ่งที่คุณกำลังมองหา
ฉันใช้คำชี้แจงต่อไปนี้เพื่อค้นหาตารางทั้งหมดที่อาจมีข้อมูลไบนารี / ไฟล์
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' )
)