SQL Server’da Tablo Kolonlarını Virgülle Ayırıp Liste Haline Getirmek
Herkese merhaba,
Bu yazıda SQL Server’da tablo kolonlarını virgülle ayırıp liste haline getirmek ile ilgili bilgi vermeye çalışacağım.
SQL Server’da bazı durumlarda tablonuzdaki kolon sayısı fazla olabilir. SELECT sonrası kolon isimlerini tek tek yazmak yerine aşağıdaki kodu kullanarak kolon isimlerinin hepsini listeleyebilirsiniz. Ya da dinamik olarak çeşitli yerlerde bu sorguyu kullanabilirsiniz.
Aşağıdaki kodu kullanarak siz de bu işlemi rahatlıkla yapabilirsiniz.
DECLARE @TABLE_NAME VARCHAR(128);
DECLARE @SCHEMA_NAME VARCHAR(128);
SET @TABLE_NAME = 'Categories';
SET @SCHEMA_NAME = 'dbo';
DECLARE @vvc_ColumnName VARCHAR(128);
DECLARE @vvc_ColumnList VARCHAR(MAX);
IF @SCHEMA_NAME = ''
BEGIN
PRINT 'Hata : Şema tanımlanmadı!';
RETURN;
END;
IF NOT EXISTS
(
SELECT *
FROM sys.tables T
JOIN sys.schemas S
ON T.schema_id = S.schema_id
WHERE T.name = @TABLE_NAME
AND S.name = @SCHEMA_NAME
)
BEGIN
PRINT 'Hata : Tablo Adı : ''' + @TABLE_NAME + ''' ve Şema Adı : ''' + @SCHEMA_NAME + ''' veritabanında bulunamadı';
RETURN;
END;
DECLARE TableCursor CURSOR FAST_FORWARD FOR
SELECT CASE
WHEN PATINDEX('% %', C.name) > 0 THEN
'[' + C.name + ']'
ELSE
C.name
END
FROM sys.columns C
JOIN sys.tables T
ON C.object_id = T.object_id
JOIN sys.schemas S
ON S.schema_id = T.schema_id
WHERE T.name = @TABLE_NAME
AND S.name = @SCHEMA_NAME
ORDER BY column_id;
SET @vvc_ColumnList = '';
OPEN TableCursor;
FETCH NEXT FROM TableCursor
INTO @vvc_ColumnName;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @vvc_ColumnList = @vvc_ColumnList + @vvc_ColumnName;
-- get the details of the next column
FETCH NEXT FROM TableCursor
INTO @vvc_ColumnName;
-- add a comma if we are not at the end of the row
IF @@FETCH_STATUS = 0
SET @vvc_ColumnList = @vvc_ColumnList + ',';
END;
CLOSE TableCursor;
DEALLOCATE TableCursor;
PRINT 'Virgülle Ayrılmış Kolon İsimleri';
PRINT '--------------------------------------------------';
PRINT @vvc_ColumnList;
Yukarıdaki kodu çalıştırınca aşağıdakine benzer bir sonuç göreceksiniz.
Görüldüğü üzere tablo kolonlarını virgülle ayırıp liste haline getirmiş olduk.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.