2008-10-24 46 views

Trả lời

36
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME='tablename' AND COLUMN_NAME='columname') 
+1

Để tham khảo: Điều này cũng hoạt động trong SQL Server 2005 – Russell

+0

Điều này cũng hoạt động trên SQL Server 2016;) –

4

Trong trình phân tích truy vấn, chọn Cơ sở dữ liệu chứa bảng mà bạn cần kiểm tra xem trường có tồn tại hay không và chạy truy vấn bên dưới.

SELECT count(*) AS [Column Exists] 
FROM SYSOBJECTS 
INNER JOIN SYSCOLUMNS ON SYSOBJECTS.ID = SYSCOLUMNS.ID 
WHERE 
SYSOBJECTS.NAME = 'myTable' 
AND SYSCOLUMNS.NAME = 'Myfield' 
8
If col_length('table_name','column_name') is null 
    select 0 as Present 
ELSE 
    select 1 as Present 

hiện tại sẽ là 0, là không có column_name hiện diện trong tên_bảng, nếu không 1

@CMS: Tôi không nghĩ rằng 'information_schema' có thông tin về tất cả các bảng trong DB. Bởi vì điều này không hiệu quả với tôi. Nhưng câu trả lời của tôi đã làm việc.

1

này nên làm độc đáo:

if COLUMNPROPERTY(object_id('table_name'), 'column_name', 'ColumnId') is null 
    print 'doesn\'t exist' 
else 
    print 'exists' 
0

Tôi không biết nếu kịch bản này sẽ làm việc trong SQLServer 2000, nhưng năm 2008 công trình:

SELECT COLUMNS.* 
FROM INFORMATION_SCHEMA.COLUMNS COLUMNS, INFORMATION_SCHEMA.TABLES TABLES 
WHERE COLUMNS.TABLE_NAME=TABLES.TABLE_NAME AND UPPER(COLUMNS.COLUMN_NAME)=UPPER('column_name') 
Các vấn đề liên quan