2016-03-23 25 views
1

Her biri 30+ sütun içeren birkaç tablo var ve boş değerlere izin vermeyen sütunların adlarını kolayca almak istiyorum.Boş bırakılamaz sütun adlarını seç

Tablo için bunu yapabilecek basit bir sorgu var mı?

describe [table_name] gibi bir şey, ancak bu yalnızca hoş bir şey olsa da, yalnızca gerekli sütunları gösterir ve sütunlar (tür) ile ilgili başka bilgiler gerektirmez.

cevap

3
USE [dbtest] 
GO 

CREATE TABLE dbo.[Event] 
(
    ID INT PRIMARY KEY, 
    Name VARCHAR(10) NULL 
) 
GO 

------------------------------------------------ 

USE [dbtest] --- !!! 
GO 

SELECT name 
FROM sys.columns 
WHERE [object_id] = OBJECT_ID('dbo.Event', 'U') 
    AND is_nullable = 0 

Çıktı -

name 
----------- 
ID 
+0

Bu görünüyor ben arıyorum 1 dönen ettiğimi olmak Sütun isimlerini listeleyeceğini düşündüğüm 'name' sütunu benim için boş. AND deyimini kaldırırken hala boş, bu yüzden tabloda kesinlikle sütunlar olduğu için bir şeyler yanlış olmalı. İşte benim sorgu: [Object_id] = OBJECT_ID ('dbname.dbo.Event', 'U') VE is_nullable = 1 –

+1

deneyin doğrudan – Devart

+0

db' 'KULLANIM ayarlamak için sys.columns DAN SEÇ adı Sadece bir not, soru null olamaz sütunlar göstermek oldu, hangi durumda set 'is_nullable = 0' –

1
SELECT * 
FROM INFORMATION_SCHEMA.columns 
WHERE table_name = 'test1' 
    AND is_nullable = 'no' 
1

sys.tables kullanabilir ve sys.columns sanal tablolar:

select T.name as [TableName], C.name As [ColumnName] 
from sys.columns c 
inner join sys.tables t 
    on t.object_id = c.object_id 
WHERE t.name = 'MyTable' AND c.is_nullable = 0 AND t.type = 'U' 
İlgili konular