2012-12-07 20 views
5

SQL Server kullanarak bir SQL sorgusundan dönen sütun sayısını nasıl alabilirim? ÖrneğinBir sorgu tarafından döndürülen sütunların sayısı bulma

, bir aşağıdaki gibi bir sorgu varsa:

SELECT * 
FROM A1, A2 

Bu masa A1 +, tablo A2'de sütun sayısı sütun sayısı döndürmelidir. Ancak sorgu daha karmaşık olabilir.

+3

Merak etme, neden toplam sütun sayısını istiyorsunuz? Ayrıca, burada yer alan cümlede örtülü birleşimler yerine uygun birleştirme sözdizimi kullanmalısınız. –

+0

Çalışmam gereken eski bir kod var ve başka bir yere kaç sütun döndüğünü kontrol etmem gerekiyor. Bir hata ayıklama sorunu gibi daha fazla –

+0

kayıt sayısı ihtiyacım yok, sadece toplam sütun sayısını döndürmek gerekiyor –

cevap

7

İşte bir yöntemdir.

1

Çirkin biliyorum: Bir görünüm oluşturarak benzer bir şey yapabilirsiniz

select top 0 
into _MYLOCALTEMPTABLE 
from (your query here) t 

select count(*) 
from Information_Schema.Columns c 
where table_name = '_MYLOCALTEMPTABLE' 

:

SELECT COUNT(*) + 
(
    SELECT COUNT(*) 
    FROM information_schema.columns 
    WHERE table_name = 'A1' 
) 
FROM information_schema.columns 
WHERE table_name = 'A2' 
+3

Soru, özellikle bir sorguyla ilgili değil, bir tabloyla ilgilidir. soruya cevap vermiyor. –

+0

Yalnızca bu belirli örnek sorguyu değil, kaç tane sütun döndürdüğünü öğrenmek istediğim birkaç farklı sorgu var. –

2

Bunu deneyin;

--Insert into a temp table (this could be any query) 
SELECT * 
INTO #temp 
FROM [yourTable] 

--Select from temp table 
SELECT * FROM #temp 

--List of columns 
SELECT COUNT(name) NumOfColumns FROM tempdb.sys.columns WHERE object_id = 
object_id('tempdb..#temp'); 

--drop temp table 
DROP TABLE #temp 
6

Kendi SQL Server sürüm belirtmedi ama Bununla birlikte, bu sorunun gelecek okuyucular 2012+ yüzden onlar için bu cevabı post ediyorum olabilecek 2012. değil varsayıyorum.

SQL Server 2012, sorgular ve parametreler hakkında daha fazla meta veri sağlamak için bir dizi yordam sağlar. Bu durumda, saklı yordam sp_describe_first_result_set, kullanışlı bir tablo biçiminde sağlayacaktır. Yeni meta veri keşif seçenekleri tek çözecek nasıl FMTONLY değiştiriyorsanız

DECLARE 
    -- Your query goes here 
    @query nvarchar(4000) = N'SELECT * FROM mdm.tblStgBatch AS TSB'; 

-- Tabular results 
EXECUTE sys.sp_describe_first_result_set @tsql = @query; 

-- Simple column count 
SELECT 
    COUNT(1) AS column_count 
FROM 
    sys.dm_exec_describe_first_result_set(@query, NULL, 0); 

sizin örnekte kullanmak isterdim budur benzer içerik sağlamak için DMO fonksiyonu, sys.dm_exec_describe_first_result_set da vardır

2012'den önce bu sorun. TSQL pirzolamlar görünüşte onunla yararlı bir şey yapmak için yeterince güçlü değil ve bunun yerine FMTONLY çıktısı ile çalışmak için bir .NET dili kurtarmam gerekir.

SET FMTONLY ON; 
SELECT * 
FROM A1, A2; 
SET FMTONLY OFF; 
+1

Bu, bir tabloyu analiz etmek için sorgumla SELECT INTO kullanamayacağından durumumda bir hayat kurtarıcıydı. Teşekkürler! –

İlgili konular