আমি কীভাবে এসকিউএল সার্ভারের কোনও টেবিল থেকে কলামের নাম পেতে পারি?


715

আমি একটি টেবিলের সমস্ত কলামের নাম জানতে চাই। আমি কীভাবে এটি করতে পারি তা খুঁজে পেয়েছি:

তবে আমার জানা দরকার: এটি কীভাবে মাইক্রোসফ্ট এসকিউএল সার্ভারে করা যেতে পারে (আমার ক্ষেত্রে ২০০৮)?


48
একটি দ্রুত ও মলিন কৌতুক হিসাবে, সত্যিই মত আমি কি করতেSELECT * FROM my_table WHERE 1=0
bgusach

12
@ বিগুসাচ - দেখে মনে হচ্ছে যে ব্যবহারকারী কোনও সারণীতে সারি হিসাবে কলামগুলির নাম চেয়েছিলেন তবে আপনি যা করার চেষ্টা করছেন SELECT TOP 0 * FROM my_tableতার জন্য কম কীস্ট্রোক রয়েছে
জেক উড

@ বিগুসাচ: এটি আমার কাছে উত্তর বলে মনে হচ্ছে। আপনার এটি পোস্ট করা উচিত।
পালসুইম

উত্তর:


863

আপনি তথ্য স্কিমার দর্শনগুলি অনুসন্ধান করে এই তথ্য এবং আরও অনেক কিছু পেতে পারেন ।

এই নমুনা ক্যোয়ারী:

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'

এই সমস্ত ডিবি বস্তুর উপর তৈরি করা যেতে পারে:


25
"এন" "" এন কাস্টমার্স "" এর অর্থ কী?
কিউবিক

20
কিউবিক "এন" যদি এএনএসআই (32 বিট) এবং ইউনিকোড (64 বিট) এর এনভারচরের মতো ইউনিকোড স্ট্রিং হ্যান্ডল করার জন্য
থটসলোক

9
নিশ্চিত: মারিয়াডিবিতেও কাজ করে! :) (ছাড়াই Nortwind....)
jave.web

5
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'tableName';এটি আমার জন্য কাজ করে
পাভোল ট্র্যাভনিক

1
আমি TABLE_SCHEMA = '?' AND TABLE_NAME = '?'লোকালহোস্টে থাকাকালীন আমাকে ব্যবহার করতে হয়েছিল এবং আমার একই নামের সাথে একাধিক টেবিল রয়েছে তবে বিভিন্ন ডাটাবেসে।
আকিনুরি

194

আপনি সঞ্চিত পদ্ধতি ব্যবহার করতে পারেন sp_collines যা প্রদত্ত টেবিলের জন্য সমস্ত কলামের সাথে সম্পর্কিত তথ্য ফেরত দেবে। আরও তথ্য এখানে পাওয়া যাবে http://msdn.microsoft.com/en-us/library/ms176077.aspx

আপনি এটি এসকিউএল কোয়েরি দ্বারাও করতে পারেন। এর মতো কিছু জিনিসকে সহায়তা করা উচিত:

SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('dbo.yourTableName') 

বা তারতম্যটি হ'ল:

SELECT   o.Name, c.Name
FROM     sys.columns c 
         JOIN sys.objects o ON o.object_id = c.object_id 
WHERE    o.type = 'U' 
ORDER BY o.Name, c.Name

এটি সমস্ত টেবিল থেকে সমস্ত কলাম পায়, টেবিলের নাম অনুসারে অর্ডার করে কলামের নাম অনুসারে।


147
select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'

এটি থেকে পাওয়ার চেয়ে এটি ভাল sys.columnsকারণ এটি DATA_TYPEসরাসরি দেখায় ।


5
+1 করুন যেহেতু মান ANSI এসকিউএল (হয় en.wikipedia.org/wiki/Information_schema ) sys.objects মত অন্যান্য উত্তর মান নয়
বিপরীত ইঞ্জিনিয়ার

যদি টেবিল অন্য স্কিমা (এসকিউএল সার্ভার "স্কিমা" বৈকল্পিক) রয়েছে যোগ AND TABLE_SCHEMA = 'schemaName'মধ্যে WHEREদফা।
জোহান

খুব দরকারী, এবং প্রতিটি কলামের নামের পাশের প্রকারগুলি পেতে আপনি নিজের 'নির্বাচন' বিবৃতিতে যুক্ত JOIN sys.types t on c.system_type_id = t.system_type_idএবং যুক্ত করতে পারেন । t.name
প্যাক 0

56

আপনি sp_helpএসকিউএল সার্ভার 2008 ব্যবহার করতে পারেন ।

sp_help <table_name>;

উপরের কমান্ডের জন্য কীবোর্ড শর্টকাট: সারণির নাম নির্বাচন করুন (যেমন এটি হাইলাইট করুন) এবং ALT+ টিপুন F1


1
এটি আমার সর্বকালের প্রিয় কীবোর্ড শর্ট কাট। আমি splhelptext কেও Cntl-F1 এ নিয়োগ করি। এই দুটি শর্টকাট একসাথে এত সময় বাঁচায়!
পল ওয়েল্যান্ড

44

এই ক্যোয়ারী ব্যবহার করে আপনি উত্তর পাবেন:

select Column_name 
from Information_schema.columns 
where Table_name like 'table name'

35

আপনি মাইএসকিউএলে INFORMATION_SCHEMA ব্যবহার না করে কলামের নাম এবং সমস্ত বিশদ জানতে এই কোয়েরিটি লিখতে পারেন:

SHOW COLUMNS FROM database_Name.table_name;

7
@ বেঞ্জামিন, কারণ এই প্রশ্নটি এসকিউএল সার্ভারের জন্য এবং এই উত্তরটি
মাইএসকিএল

1
মাইএসকিউএল ব্যবহার করা বেশিরভাগ লোকেরা এই সমস্যার মুখোমুখি হতে পারেন। এবং আমি এটি উল্লেখ করেছি। আমি মাই এসকিএল ব্যবহার করছি।
শচীন পার্সে

5
অন্যান্য আরডিবিএমএস ব্যবহারকারী বেশিরভাগ লোকের একই সমস্যা রয়েছে কিনা তা বিবেচ্য নয়, এটি মূল প্রশ্নের সাথে অপ্রাসঙ্গিক এবং প্রাসঙ্গিক উত্তরগুলি আরও নীচে ঠেলে দেয়।
ডেমোনব্ল্যাক

1
আমি ডাউনটি লিখেছি কারণ প্রশ্নটি বিশেষত এমএসকিএল
লুকাস

27
--This is another variation used to document a large database for conversion (Edited to --remove static columns)

SELECT o.Name                   as Table_Name
     , c.Name                   as Field_Name
     , t.Name                   as Data_Type
     , t.length                 as Length_Size
     , t.prec                   as Precision_
FROM syscolumns c 
     INNER JOIN sysobjects o ON o.id = c.id
     LEFT JOIN  systypes t on t.xtype = c.xtype  
WHERE o.type = 'U' 
ORDER BY o.Name, c.Name

--In the left join, c.type is replaced by c.xtype to get varchar types

22
SELECT name
FROM sys.columns
WHERE object_id = OBJECT_ID('TABLE_NAME')

TABLE_NAME আপনার টেবিল


15
SELECT column_name, data_type, character_maximum_length, table_name,ordinal_position, is_nullable 
FROM information_schema.COLUMNS WHERE table_name LIKE 'YOUR_TABLE_NAME'
ORDER BY ordinal_position


11

এই SO প্রশ্নটি নিম্নলিখিত পদ্ধতির অনুপস্থিত:

-- List down all columns of table 'Logging'
select * from sys.all_columns where object_id = OBJECT_ID('Logging')

10

এটি পরীক্ষা করে দেখব কিনা দেওয়া tableহয় বেজ ছক

SELECT 
    T.TABLE_NAME AS 'TABLE NAME',
    C.COLUMN_NAME AS 'COLUMN NAME'
FROM INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.COLUMNS C ON T.TABLE_NAME=C.TABLE_NAME
    WHERE   T.TABLE_TYPE='BASE TABLE'
            AND T.TABLE_NAME LIKE 'Your Table Name'

10

আপনি এটি চেষ্টা করে দেখতে পারেন his এটি সমস্ত কলামের নাম তাদের নিজ নিজ ডেটা ধরণের দিয়ে দেয়।

desc <TABLE NAME> ;

আমি জানি ওরাকলে এটি কাজ করে। কিন্তু মাইক্রোসফ্ট এসকিউএল এ কাজ করে? ধন্যবাদ.
DxTx

6

আপনি এই ক্যোয়ারী ব্যবহার করতে পারেন

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'


5

যুক্তিযুক্ত আরও স্বজ্ঞাত অন্য একটি বিকল্প হ'ল:

SELECT [name] 
FROM sys.columns 
WHERE object_id = OBJECT_ID('[yourSchemaType].[yourTableName]') 

এটি আপনাকে একক কলামে আপনার সমস্ত কলামের নাম দেয়। আপনি যদি অন্য মেটাডেটা সম্পর্কে চিন্তা করেন তবে আপনি সম্পাদনা নির্বাচন করুন নির্বাচন করতে পারেন SELECT *


2

উত্তরগুলির সংক্ষিপ্তসার

আমি এটি করার বিভিন্ন রকম উত্তর এবং উপায় দেখতে পাচ্ছি তবে এটিতে ঘষা রয়েছে এবং এটিই objective

হ্যাঁ, উদ্দেশ্য। আপনি যদি only knowকলামের নামগুলি করতে চান তবে আপনি ব্যবহার করতে পারেন

SELECT * FROM my_table WHERE 1=0
or
SELECT TOP 0 * FROM my_table

তবে আপনি যদি useকোথাও এই কলামগুলিতে চান বা কেবল manipulateতাদের বলতে চান তবে উপরের দ্রুত অনুসন্ধানগুলি কোনও কাজে আসবে না। আপনার ব্যবহার করা দরকার

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'Customers'

আমাদের আরও কিছু নির্দিষ্ট কলামগুলি জানার জন্য যেখানে আমাদের অনুরূপ কিছু কলামের প্রয়োজন

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'


0
SELECT TOP (0) [toID]
      ,[sourceID]
      ,[name]
      ,[address]
  FROM [ReportDatabase].[Ticket].[To]

সরল এবং কোনও সিস্ট টেবিলের প্রয়োজন নেই

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.