जवाबों:
यकीन नहीं होता कि 2008 संस्करण में एक आसान तरीका है।
USE [Database Name]
SELECT COLUMN_NAME,*
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTableName' AND TABLE_SCHEMA='YourSchemaName'
यह सबसे आसान तरीका है
exec sp_columns [tablename]
कुछ इस तरह?
sp_columns @table_name=your table name
एक विधि syscolumns को क्वेरी करना है:
select
syscolumns.name as [Column],
syscolumns.xusertype as [Type],
sysobjects.xtype as [Objtype]
from
sysobjects
inner join
syscolumns on sysobjects.id = syscolumns.id
where sysobjects.xtype = 'u'
and sysobjects.name = 'MyTableName'
order by syscolumns.name
Objtypeकॉलम बेमानी लगता है , हालाँकि :)
यह थोड़ा आसान लगता है तो उपरोक्त सुझाव क्योंकि यह तालिका की आईडी का पता लगाने के लिए OBJECT_ID () फ़ंक्शन का उपयोग करता है । उस आईडी वाला कोई भी कॉलम तालिका का हिस्सा है।
SELECT *
FROM syscolumns
WHERE id=OBJECT_ID('YOUR_TABLE')
मैं आमतौर पर एक समान क्वेरी का उपयोग करता हूं यह देखने के लिए कि क्या मुझे पता है कि एक नया संस्करण मौजूद है। यह उसी खंड के {{name = 'your_COLUMN'} के जोड़ के साथ एक ही प्रश्न है।
IF EXISTS (
SELECT *
FROM syscolumns
WHERE id=OBJECT_ID('YOUR_TABLE')
AND name='YOUR_COLUMN'
)
BEGIN
PRINT 'Column found'
END
इसे इस्तेमाल करे
select * from <tablename> where 1=2
...............................................
WHERE 1=2और यह अभी भी कॉलम मेटा-डेटा लौटाएगा। यदि ओडीबीसी जैसे प्रोग्रामेटिक इंटरफ़ेस का उपयोग किया जाता है, तो यह कॉलम जानकारी प्रोग्राम के भीतर कर्सर ऑब्जेक्ट से एक सूची / सरणी के रूप में सुलभ है, जिसे मैं देख रहा था। यह एक शुद्ध SQL संदर्भ में समझ में नहीं आ सकता है, लेकिन पायथन / जावा / सी / आदि के माध्यम से एक डेटाबेस से कनेक्ट करते समय एक संक्षिप्त दृष्टिकोण है।
ऊपर दी गई पहली सुझाई गई क्वेरी की तरह लगता है, लेकिन कभी-कभी आपको इसे काम करने के लिए डेटाबेस को निर्दिष्ट करना होगा। ध्यान दें कि क्वेरी को TABLE_SCHEMA को निर्दिष्ट किए बिना भी काम करना चाहिए:
SELECT COLUMN_NAME
FROM YOUR_DB_NAME.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YOUR_TABLE_NAME' AND TABLE_SCHEMA = 'YOUR_DB_NAME'
सिर्फ यही कोशिश क्यों न करें:
सही तालिका पर क्लिक करें -> स्क्रिप्ट तालिका के रूप में -> बनाएँ -> नई क्वेरी संपादक विंडो?
कॉलम की पूरी सूची स्क्रिप्ट में दी गई है। इसे कॉपी करें और आवश्यकतानुसार फ़ील्ड्स का उपयोग करें।
"I want to return these as data", जबकि आपके उत्तर को मान मिलेगा, यह संभावना है कि ओपी रनटाइम पर डेटा चाहता है।
USE[Database]
SELECT TABLE_NAME,TABLE_SCHEMA,[Column_Name],[Data_type]
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA='dbo'
CREATE PROCEDURE [dbo].[Usp_GetColumnName]
@TableName varchar(50)
AS
BEGIN
BEGIN
SET NOCOUNT ON
IF (@TableName IS NOT NULL)
select ORDINAL_POSITION OrderPosition,COLUMN_NAME ColumnName from information_schema.columns
where table_name =@TableName
order by ORDINAL_POSITION
END
END
अगर syscolumns.colid मान 'ORDINAL_POSITION' मान sp_columns के भाग के रूप में लौटाया गया है, तो मैं निश्चित नहीं हूं, लेकिन इस प्रकार मैं इसका उपयोग इस तरह से कर रहा हूं - आशा है कि मैं गलत नहीं कर रहा हूं ...
यहां मेरे द्वारा खोजे गए कुछ अन्य उत्तरों पर थोड़ा बदलाव किया गया है - मैं इसका उपयोग करता हूं क्योंकि तालिका में कॉलम की 'स्थिति' या क्रम मेरे आवेदन में महत्वपूर्ण है - मुझे मूल रूप से यह जानना होगा कि कॉलम (n) क्या है ? '
sp_columns बाहरी सामान का एक पूरा गुच्छा लौटाता है, और मैं टी-एसक्यूएल फ़ंक्शन की तुलना में चुनिंदा के साथ हैंडियर हूं, इसलिए मैं इस मार्ग पर गया:
select
syscolumns.name,
syscolumns.colid
from
sysobjects, syscolumns
where
sysobjects.id = syscolumns.id and
sysobjects.xtype = 'u' and
sysobjects.name = '<YOUR_TABLE>'
order by syscolumns.colid
जबकि @ गुलज़ार नाज़िम का उत्तर बहुत अच्छा है, संभवतः क्वेरी में डेटाबेस नाम को शामिल करना आसान है , जिसे निम्नलिखित एसक्यूएल द्वारा प्राप्त किया जा सकता है।
SELECT COLUMN_NAME, *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'you-table-name' AND TABLE_CATALOG='your-database-name'
आप सभी कॉलम नामों को प्रिंट करने के लिए नीचे दिए गए कोड का उपयोग कर सकते हैं; आप चाहे जैसे भी प्रारूप में अन्य विवरण प्रिंट करने के लिए कोड को संशोधित कर सकते हैं
declare @Result varchar(max)='
'
select @Result=@Result+''+ColumnName+'
'
from
(
select
replace(col.name, ' ', '_') ColumnName,
column_id ColumnId
from sys.columns col
join sys.types typ on
col.system_type_id = typ.system_type_id AND col.user_type_id = typ.user_type_id
where object_id = object_id('tblPracticeTestSections')
) t
order by ColumnId
print @Result
उत्पादन
column1
column2
column3
column4
तालिका और उसके स्तंभ नाम को मुद्रित करने के लिए समान कोड का उपयोग करने के लिए C # वर्ग नीचे दिए गए कोड का उपयोग करें:
declare @TableName sysname = '<EnterTableName>'
declare @Result varchar(max) = 'public class ' + @TableName + '
{'
select @Result = @Result + '
public static string ' + ColumnName + ' { get { return "'+ColumnName+'"; } }
'
from
(
select
replace(col.name, ' ', '_') ColumnName,
column_id ColumnId
from sys.columns col
join sys.types typ on
col.system_type_id = typ.system_type_id AND col.user_type_id = typ.user_type_id
where object_id = object_id(@TableName)
) t
order by ColumnId
set @Result = @Result + '
}'
print @Result
आउटपुट:
public class tblPracticeTestSections
{
public static string column1 { get { return "column1"; } }
public static string column2{ get { return "column2"; } }
public static string column3{ get { return "column3"; } }
public static string column4{ get { return "column4"; } }
}
मैं सिर्फ मार्टिन स्मिथ की तरह एक प्रश्न का उपयोग करता हूं, बस थोड़ा कम:
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTableName'
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'TableName'
चूंकि SysColumns पदावनत है , इसलिए उपयोग करें Sys.All_Columns:
Select
ObjectName = Object_Name(Object_ID)
,T.Name
,C.*
,T.*
From
Sys.All_Columns C
Inner Join Sys.Types T On T.User_Type_Id = C.User_Type_Id
Where [Object_ID] = Object_ID('Sys.Server_Permissions')
--Order By Name Asc
Select * From Sys.Typesuser_type_id = IDप्रकार की उपज होगी । यह डेटाबेस के भीतर अद्वितीय है। सिस्टम डेटा प्रकारों के लिए user_type_id = system_type_id:।
DECLARE @col NVARCHAR(MAX);
SELECT @col= COALESCE(@col, '') + ',' + COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS WHERE Table_name = 'MxLocations';
SELECT @col;
यदि आप postgresql के साथ काम कर रहे हैं तो संभावना है कि एक से अधिक स्कीमा में एक ही नाम वाली तालिका हो सकती है जो क्वेरी के लिए बनाई गई है।
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'your_table_name' AND table_schema = 'your_schema_name’;