SQL सर्वर 2008 का उपयोग कर तालिका के कॉलम नाम कैसे वापस करूँगा? यानी एक तालिका में इन कॉलम- आईडी, नाम, पता, देश शामिल हैं और मैं इसे डेटा के रूप में वापस करना चाहता हूं।आप तालिका के कॉलम नाम कैसे वापस कर सकते हैं?
उत्तर
अगर वहाँ 2008 संस्करण में एक आसान तरीका है सुनिश्चित नहीं हैं।
USE [Database Name]
SELECT COLUMN_NAME,*
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTableName' AND TABLE_SCHEMA='YourSchemaName'
ऐसा कुछ?
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' कॉलम अनावश्यक लगता है, हालांकि :) – Joel
क्या शामिल होना पूरी तरह से लिखना बेहतर नहीं होगा (sysobjects इतनी आंतरिक syscolumns sc में so.id = sc.id पर शामिल हों)? यह प्रदर्शन की कीमत पर एक आलसी जवाब की तरह लगता है। मैं गलत हो सकता था ... – Losbear
@ लॉसबियर ने इसे बदल दिया PS: आलसी नहीं, यह सिर्फ 8 साल पहले ही कोड है। :) पुराने समय में (मैंने संस्करण 4.2 पर शुरू होने वाले SQL सर्वर का उपयोग किया), मैं इस तरह से SQL क्वेरी लिखता था। कोई प्रदर्शन समस्या नहीं है। – splattne
मुझे यकीन है कि अगर syscolumns.colid मूल्य लेकिन में, sp_columns के हिस्से के रूप में लौट आए 'ORDINAL_POSITION' मान के समान है नहीं कर रहा हूँ क्या इस प्रकार मैं इसका उपयोग कर रहा हूं - उम्मीद है कि मैं गलत जानकारी नहीं दे रहा हूं ...
यहां मिले कुछ अन्य उत्तरों पर थोड़ी भिन्नता है - मैं इसका उपयोग इसलिए करता हूं क्योंकि कॉलम की 'स्थिति' या ऑर्डर तालिका मेरे आवेदन में महत्वपूर्ण है - मुझे मूल रूप से जानने की जरूरत है 'कॉलम क्या है (एन) बुलाया?'
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
मैंने इस विधि का प्रयोग लंबे समय तक किया था, लेकिन इसके खिलाफ सलाह दी गई थी। असल में मैंने सही समस्या को मारा जो मुझे बताया गया था ... यह अधिक संभावना है कि एमएसएसक्यूएल के नए संस्करण सिंटैक्स को बदल देंगे। उदाहरण के लिए यह उन संस्करणों में sys.object और sys.columns होता था जिन्हें मैंने पहली बार इस तकनीक का उपयोग किया था। माना जाता है कि स्कीमा और संग्रहीत प्रक्रिया विधियां इसके खिलाफ अधिक प्रमाण हैं ... सुनिश्चित नहीं है, लेकिन अब तक बहुत अच्छा है। – RosieC
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 [email protected]
order by ORDINAL_POSITION
END
END
एसओ में आपका स्वागत है!लेकिन ऐसा लगता है कि इस प्रश्न को पहले से ही तीन साल पहले एक संतोषजनक उत्तर मिला है ... साथ ही, कोड पोस्ट करते समय, इसे हाइलाइट करने के लिए {} का उपयोग करें। एफएक्यू पर एक नज़र डालें, इसकी शुरुआत यहां कुछ अच्छी जानकारी है: http://stackoverflow.com/faq –
यह सबसे आसान तरीका है
है:sp_columns बाहरी सामान की एक पूरी गुच्छा देता है, और मैं T-SQL कार्यों की तुलना में एक चयन के साथ handier हूँ, इसलिए मैं इस मार्ग चला गया
exec sp_columns [tablename]
यह छोटा और सरल है, सही जवाब होना चाहिए। मुझे कल्पना है कि जब प्रश्न मूल रूप से पूछा गया था तब यह अस्तित्व में नहीं था :) – DanteTheSmith
क्यों नहीं सिर्फ इस प्रयास करें:
सही टैब पर क्लिक करें le -> स्क्रिप्ट तालिका के रूप में -> बनाने के लिए -> नई क्वेरी संपादक विंडो?
कॉलम की पूरी सूची स्क्रिप्ट में दी गई है। इसे कॉपी करें और आवश्यकतानुसार फ़ील्ड का उपयोग करें।
लेखक शायद यह जानना चाहता था कि संग्रहित प्रक्रिया या अन्य स्क्रिप्ट में प्रोग्राम के लिए प्रोग्राम से कॉलम नाम कैसे प्राप्त करें। – KLee1
उत्तर में कहा गया है, "मैं इसे डेटा के रूप में वापस करना चाहता हूं", जबकि आपके उत्तर को मूल्य मिलेगा, ऐसा लगता है कि ओपी रनटाइम पर डेटा चाहता है। – StuperUser
मैं उपयोग
SELECT st.NAME, sc.NAME, sc.system_type_id
FROM sys.tables st
INNER JOIN sys.columns sc ON st.object_id = sc.object_id
WHERE st.name LIKE '%Tablename%'
इसका कारण यह है कि यह object_id() फ़ंक्शन का उपयोग करता तालिका के आईडी का पता लगाने का थोड़ा आसान तो उपरोक्त सुझावों लगता है। उस आईडी के साथ कोई भी स्तंभ तालिका का हिस्सा है।
SELECT *
FROM syscolumns
WHERE id=OBJECT_ID('YOUR_TABLE')
मैं आमतौर पर एक समान क्वेरी का उपयोग करता हूं यह देखने के लिए कि मुझे पता है कि एक कॉलम एक नए संस्करण का हिस्सा है या नहीं। यह कहां है जहां {AND name = 'YOUR_COLUMN'} को जोड़ने के साथ ही वही प्रश्न है।
IF EXISTS (
SELECT *
FROM syscolumns
WHERE id=OBJECT_ID('YOUR_TABLE')
AND name='YOUR_COLUMN'
)
BEGIN
PRINT 'Column found'
END
set fmtonly on
select * from yourTable
तरह मार्टिन स्मिथ, उल्लेख बस थोड़ा मैं सिर्फ एक क्वेरी का उपयोग कम:
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTableName'
निम्नलिखित ऊपर पहले प्रस्तावित क्वेरी की तरह प्रतीत हो रहा है, लेकिन कुछ समय आप डेटाबेस निर्दिष्ट करना इसे काम करने के लिए।ध्यान दें कि क्वेरी भी TABLE_SCHEMA निर्दिष्ट किए बिना काम करना चाहिए:
SELECT COLUMN_NAME
FROM YOUR_DB_NAME.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YOUR_TABLE_NAME' AND TABLE_SCHEMA = 'YOUR_DB_NAME'
@Gulzar Nazim के जवाब बढ़िया है, फिर यह शायद आसान डेटाबेस नाम क्वेरी में है, जो निम्नलिखित एसक्यूएल द्वारा प्राप्त किया जा सकता है शामिल करने के लिए है ।
SELECT COLUMN_NAME, *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'you-table-name' AND TABLE_CATALOG='your-database-name'
USE[Database] SELECT TABLE_NAME,TABLE_SCHEMA,[Column_Name],[Data_type] FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='dbo'
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'TableName'
SysColumns is deprecated के बाद से, 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.Types
प्रकार के user_type_id = ID
निकलेगा। यह डेटाबेस के भीतर अद्वितीय है। सिस्टम डेटा प्रकारों के लिए: user_type_id = system_type_id
।
आप सभी कॉलम नाम मुद्रित करने के लिए नीचे दिए गए कोड का उपयोग कर सकते हैं; तुम भी अन्य विवरण जो भी प्रारूप में यू की तरह
declare @Result varchar(max)='
'
select @[email protected]+''+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
मुद्रित करने के लिए एक ही कोड का उपयोग करने के मेज और सी # वर्ग के रूप में अपनी स्तंभ नाम का उपयोग मुद्रित करने के लिए कोड को संशोधित कर सकते हैं नीचे दिए गए कोड:
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 * from <tablename> where 1=2
................................... ............
DECLARE @col NVARCHAR(MAX);
SELECT @col= COALESCE(@col, '') + ',' + COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS WHERE Table_name = 'MxLocations';
SELECT @col;
- 1. आप विधि पैरामीटर के नाम कैसे प्राप्त कर सकते हैं?
- 2. क्या वाईफाई सिस्टम से पूछताछ कर सकते हैं और नेटवर्क नाम वापस कर सकते हैं?
- 3. कॉलम के साथ आप 100% चौड़ाई तालिका कैसे बनाते हैं?
- 4. प्रमाणीकरण प्रपत्र वापस कर सकते हैं returnUrl
- 5. संग्रहीत प्रक्रियाओं को परिणाम सेट वापस कर सकते हैं?
- 6. एसक्यूएल सर्वर 2008 R2 में - आप डेटाबेस आरेख उपकरण में एक तालिका नाम बदल सकते हैं?
- 7. आप राइनो से बाहर निकलने के कोड कैसे वापस कर सकते हैं?
- 8. आप UIElement के अभिभावक को कैसे प्राप्त कर सकते हैं?
- 9. आप कक्षा के गुणों पर कैसे लूप कर सकते हैं?
- 10. सी में आप क्या नहीं कर सकते हैं जिसे आप उद्देश्य-सी में कर सकते हैं?
- 11. सी # में आप कैसे नींबू (nybble) बाइट्स कर सकते हैं?
- 12. आप किसी एप्लिकेशन के लिए नाम कैसे आरक्षित कर सकते हैं?
- 13. आप XPath में एक ही नाम के साथ कई तत्वों की पहचान कैसे कर सकते हैं?
- 14. क्या आप एनएसपीडिकेट के साथ "अद्वितीय नाम चुनें ..." निर्दिष्ट कर सकते हैं?
- 15. आप स्ट्रीमिंगडेटा हैंडलर को आउटपुटस्ट्रीम कैसे पाइप कर सकते हैं?
- 16. क्या आप रिपोर्ट डिज़ाइनर (बोलियां 2005) में कॉलम को पुन: व्यवस्थित कर सकते हैं
- 17. क्या आप jquery AJAX कैश साफ़ कर सकते हैं?
- 18. क्या आप क्वेरी में नहीं के लिए एकाधिक कॉलम का उपयोग कर सकते हैं?
- 19. आप कैनकन क्षमता कैसे लिख सकते हैं? और एचबीटीएम रिलेशनशिप के संदर्भ में दोनों कामों को सुलभ कर सकते हैं?
- 20. LINQ: तालिका कॉलम नाम प्राप्त करें
- 21. क्या आप XAML DrawingImage को संपादन के लिए एक एसवीजी में वापस परिवर्तित कर सकते हैं?
- 22. क्या SQLQchechemy तालिका संरचना अद्यतन कर सकते हैं?
- 23. आप एमएस वर्ड वीबीए में वर्तमान तालिका कैसे प्राप्त कर सकते हैं?
- 24. क्या आप रेल में डीबी उपयोगकर्ता नाम, पीडब्ल्यू, डेटाबेस नाम प्राप्त कर सकते हैं?
- 25. रिक्त तालिका में SQLite कॉलम नाम खोजें
- 26. MySQL तालिका -> क्या आप एक ही पंक्ति में एक ही पंक्ति को कई बार वापस कर सकते हैं?
- 27. विधि अधिभार। क्या आप इसका इस्तेमाल कर सकते हैं?
- 28. आप विम में पायथन का उपयोग कैसे कर सकते हैं?
- 29. आप nowjs को कैसे कॉन्फ़िगर कर सकते हैं?
- 30. आप एक बाइनरी थ्रिफ्ट फ़ाइल इंजीनियर कैसे कर सकते हैं?
'YourSchemaName' क्या है? – Drewdin
'YourSchemaName' उस तालिका के लिए स्कीमा है जिसके विरुद्ध आप पूछताछ कर रहे हैं। उदाहरण: dbo.myTable, 'dbo' स्कीमा है जो 'myTable' से संबंधित है। स्कीमा व्यक्तिगत रूप से प्रत्येक तालिका के बजाय समूहकरण को अनुमतियां असाइन करना आसान बनाता है। यह प्रश्न भी देखें: http://stackoverflow.com/questions/1062075/why-do-table-names-in-sql-server-start-with-dbo – jmosesman
यूएसबी डेटाबेस नाम कमांड पर न भूलें अन्यथा आप मास्टर या अलग-अलग डेटाबेस – Muflix