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


184

কলামের নামগুলি পেতে আমাকে ডাটাবেসটি জিজ্ঞাসা করতে হবে, টেবিলের ডেটা দিয়ে বিভ্রান্ত হওয়ার দরকার নেই। উদাহরণস্বরূপ, যদি আমি নামক একটি টেবিল আছে EVENT_LOGরয়েছে সেটা eventID, eventType, eventDesc, এবং eventTimeতারপর, আমি প্রশ্নের সাথে এবং অন্য কিছুই থেকে যারা ফিল্ডের নাম উদ্ধার করতে চান হবে।

আমি কীভাবে এটি করতে পারি তা খুঁজে পেয়েছি:

তবে আমার জানা দরকার: ওরাকলে এটি কীভাবে করা যায় ?

উত্তর:


191

আপনি টেবিল কলাম মেটাডেটার জন্য USER_TAB_COLUMNS টেবিলটি জিজ্ঞাসা করতে পারেন।

SELECT table_name, column_name, data_type, data_length
FROM USER_TAB_COLUMNS
WHERE table_name = 'MYTABLE'

21
নোট করুন যে এটি ওরাকলের সাথে নির্দিষ্ট।
কনসার্নড

8
এটি "কোনও সারি নির্বাচিত নয়" ফেরত দেওয়ার কোনও কারণ আছে কি? (ওরাকলে।)
আয়ান আর ও'ব্রায়ান

9
আপনার যদি 'কোনও সারি নির্বাচিত না থাকে' তবে আপনি এতে পরিবর্তন USER_TAB_COLUMNSকরার চেষ্টা করতে পারেন all_tab_columns। ফলাফল সম্পর্কে 100% নিশ্চিত হওয়ার জন্য আপনি স্পিফির মালিক হতে পারেন।
ড্রাকন্টিস

2
আপনি টেবিলে তৈরি করা হয়েছে একই ক্রমে এগুলি পুনরুদ্ধার করতে হলে আপনি "কলাম_আইডি দ্বারা কমান্ড" যুক্ত করতে পারেন। এখানে টেবিল থেকে কিছু অন্যান্য প্রাসঙ্গিক কলাম তথ্য আছে docs.oracle.com/cd/B19306_01/server.102/b14237/...
ব্যার্নাউয়ার

2
সারণির নামটি বড় হাতের নাও তা নিশ্চিত করুন।
হিউ সিগ্রাভস

67

এসকিউএল সার্ভারে ...

SELECT [name] AS [Column Name]
FROM syscolumns
WHERE id = (SELECT id FROM sysobjects WHERE type = 'V' AND [Name] = 'Your table name')

দর্শনগুলির জন্য = 'ভি' টাইপ করুন টেবিলের জন্য = 'ইউ'


39

তুমি এটি করতে পারো:

describe EVENT_LOG

অথবা

desc EVENT_LOG

দ্রষ্টব্য: কেবলমাত্র যদি আপনি টেবিলের নামটি জানেন এবং বিশেষত ওরাকল এর জন্য প্রযোজ্য।


26

এসকিউএল সার্ভার ২০০৮-এর জন্য, কলামের তথ্য পাওয়ার জন্য আমরা তথ্য_সেমি কোডগুলি ব্যবহার করতে পারি

SELECT *
FROM   information_schema.columns
WHERE  table_name = 'Table_Name'
ORDER  BY ordinal_position  

1
নোট করুন যে INFORMATION_SCHEMAটেবিলগুলি এএনএসআই স্ট্যান্ডার্ড মেটাডেটা টেবিল। যে কোনও ভাল, আধুনিক আরডিবিএমএস এগুলি রাখবে।
বেকন বিট

18

এসকিউএলাইটের জন্য আমি বিশ্বাস করি যে আপনি নীচের মতো কিছু ব্যবহার করতে পারেন:

PRAGMA table_info(table-name);

Sqlite.org থেকে ব্যাখ্যা:

এই প্রাগমা নামযুক্ত টেবিলের প্রতিটি কলামের জন্য একটি সারি প্রদান করে। ফলাফলের সেটগুলিতে কলামগুলির মধ্যে কলামের নাম, উপাত্তের ধরণ, কলামটি NULL হতে পারে কিনা এবং কলামটির জন্য ডিফল্ট মান অন্তর্ভুক্ত। ফলাফলের সেটটিতে "পিকে" কলামটি মূল কলের অংশ নয় এমন কলামগুলির জন্য শূন্য এবং এটি প্রাথমিক কী এর অংশ থাকা কলামগুলির জন্য প্রাথমিক কীতে কলামের সূচক।

এছাড়াও দেখুন: Sqlite.org প্রগমা সারণী তথ্য


1
আমি নিশ্চিত কেন জানি আমাকে কেন ভোট দেওয়া হয়েছিল তবে আমি আনন্দিত যে এটি আপনাকে সহায়তা করেছে।
শিল্ডস্ট্রয়

2
এটি ডাউনভোট করা হয়েছে কারণ প্রশ্নটি ওরাকলকে ট্যাগ করা হয়েছে।
বুরহান আলী

2
আমি ওরাকল ট্যাগটি সরিয়ে এটিকে অগ্রাহ্য করেছি - কারণ আমি এতক্ষণে উত্তর পেয়েছি যে এই প্রশ্নটি একটি সাধারণ হিসাবে আরও ভাল কাজ করে works (আমি এখানে মাইএসকিউএল এক অনুসন্ধান করতে এসেছি))
আইসড ওয়াটার

16

এই তথ্যটি ALL_TAB_COLUMNSসিস্টেমের টেবিলে সংরক্ষণ করা হয় :

SQL> select column_name from all_tab_columns where table_name = 'DUAL';

DUMMY

অথবা আপনি DESCRIBEযদি এসকিউএল * প্লাস ব্যবহার করেন তবে আপনি টেবিলটি দেখতে পারেন:

SQL> desc dual
Name                               Null?    Type
----------------------------------------------------- -------- ---------------------- -------------
DUMMY                               VARCHAR2(1)

অফিসিয়াল ALL_TAB_COLUMNSওরাকল ডাটাবেস রেফারেন্সের মাধ্যমে অফিসিয়াল ডকুমেন্টেশন । এই দৃশ্যটি বর্তমান ব্যবহারকারীর জন্য অ্যাক্সেসযোগ্য সারণী, দর্শন এবং ক্লাস্টারগুলির কলামগুলি বর্ণনা করে।
মিঃ পলিহর্ইল

কিন্তু আমরা টেবিলের সামনে স্কিমা নাম দিতে পারি না, তাই না? উদাহরণস্বরূপ যদি আমি এটি চাই select column_name from all_tab_columns where table_name = 'dbo.usertbl';
আহমাদালিপিকে

9

অন্যান্য উত্তরগুলি প্রশ্নের যথেষ্ট উত্তর দেয় তবে আমি ভেবেছিলাম কিছু অতিরিক্ত তথ্য ভাগ করে নেব। অন্যরা টেবিলের তথ্য পাওয়ার জন্য "সারণি সারণি" বাক্য গঠন বর্ণনা করে। আপনি যদি একই ফর্ম্যাটে তথ্য পেতে চান তবে DESCRIBE ব্যবহার না করে আপনি করতে পারেন:

SELECT column_name as COLUMN_NAME, nullable || '       ' as BE_NULL,
  SUBSTR(data_type || '(' || data_length || ')', 0, 10) as TYPE
 FROM all_tab_columns WHERE table_name = 'TABLENAME';

সম্ভবত খুব বেশি কিছু যায় আসে না, তবে আমি এটি আগে লিখেছিলাম এবং এটি উপযুক্ত বলে মনে হয়।


এসকিউএল সার্ভার ২০০৮ এ এখন (বছরগুলি পরে) চেষ্টা করে আমি একটি Incorrect Syntax near '|'ত্রুটি
পেয়েছি

4

ওরাকল এর জন্য

SELECT column_name FROM user_tab_cols WHERE table_name=UPPER('tableName');

3
select column_name,* from information_schema.columns
 where table_name = 'YourTableName'
order by ordinal_position

এই কোয়েরিটি কোনও কর্নেল নাম এবং তারা- "নির্বাচন করুন কলাম_নাম, *" উল্লেখ করে কাজ করে .. এটি ওরাকলে কাজ করছে না।
তেজা


3

মাইএসকিউএল এর জন্য ব্যবহার করুন

SELECT column_name 
FROM information_schema.columns 
WHERE 
table_schema = 'Schema' AND table_name = 'Table_Name'

3

এমনকি এটিও আমরা এটি ব্যবহার করতে পারি can

select * from product where 1 != 1

2

এসকিউএল সার্ভারের জন্য:

SELECT [name] AS [Column Name]
FROM syscolumns
WHERE id = object_id('TABLE_NAME')

2
SELECT COLUMN_NAME 'all_columns' 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME='user';

স্ট্যাক ওভারফ্লোতে স্বাগতম এমনকি যদি আপনার উত্তরটি যথাযথ বলে মনে হয় তবে দয়া করে ন্যায়সঙ্গত 'কোড' এর চেয়ে আরও বিশদ এবং ব্যাখ্যা যুক্ত করুন। এটি সবার জন্য পরিষ্কার হয়ে যাবে।
জিন-রেমি রেভি

1

আপনি এটি চেষ্টাও করতে পারেন, তবে এটি আপনার প্রয়োজনের চেয়ে আরও বেশি তথ্য হতে পারে:

sp_columns TABLE_NAME

1

মাইএসকিউএল

SHOW COLUMNS FROM a_table_named_users WHERE Field REGEXP 'user_id|user_name|user_pass'

এটি এর ফলাফলকে এরকম কিছু ফিরিয়ে দেবে:

Field     |  Type        |   Null   |   Key   |   Default   |   Extra  
user_id      int(8)          NO         PRI       NULL          auto_increment
user_name    varchar(64)     NO         MUL       NULL
user_pass    varchar(64)     NO                   NULL

তারপরে আপনি সহজেই মানগুলি টানতে পারেন

fetch row[0]

এটি গতিশীলভাবে ইনপুট পাস করার জন্যও দুর্দান্ত কারণ যেহেতু আরইজিএক্সপিকে '|' একাধিক ইনপুটগুলির জন্য, তবে ক্লাস / ক্রিয়াকলাপগুলিতে ডেটা আলাদা করা এবং সংরক্ষণ / পাস করার সহজ উপায়ও keeps

প্রেরণ করার সময় সুরক্ষার জন্য ডামি ডেটা ফেলে দেওয়ার চেষ্টা করুন এবং কোনও ত্রুটি পাওয়ার পরে কী ফিরে এসেছে তার সাথে তুলনা করুন।


1

ওরাকলে, এখানে দুটি মতামত রয়েছে যা কলামগুলি বর্ণনা করে:

  • DBA_TAB_COLUMNS ডাটাবেসে সমস্ত সারণী, দর্শন এবং ক্লাস্টারের কলামগুলি বর্ণনা করে।

  • USER_TAB_COLUMNS
    বর্তমান ব্যবহারকারীর মালিকানাধীন সারণী, দর্শন এবং ক্লাস্টারের কলামগুলি বর্ণনা করে । এই দৃশ্যটি
    OWNER কলামটি প্রদর্শন করে না ।


0

উত্তরটি এখানে: http://php.net/manual/en/function.mysql-list-fields.php আমি আপনার ক্ষেত্রে নিম্নলিখিত কোডগুলি ব্যবহার করব:

$result = mysql_query("SHOW COLUMNS FROM sometable");
if (!$result) {
    echo 'Could not run query: ' . mysql_error();
    exit;
}
$fields = array();
if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
        $fields[] = $row['Field'];
    }
}

0
SELECT A.COLUMN_NAME, A.* FROM all_tab_columns a 
WHERE table_name = 'Your Table Name'
AND A.COLUMN_NAME = 'COLUMN NAME' AND a.owner = 'Schema'

0

আপনি এই কোয়েরি চালাতে পারেন

SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%%' --if you want to find specific column write here 
ORDER BY schema_name, table_name;

-1

ওরাকলের জন্য কেবল সারণী থেকে প্রথম সারিটি নির্বাচন করুন: select * from <table name> where rownum = 1;


রোউনাম কীসের পক্ষে দাঁড়ায়? আমার কি রোমনাম নামে একটি কলাম ব্যবহার করা দরকার?
মার্চ বেকা

-1

তেরদাটাতে কলামের নামগুলি অ্যাক্সেসের সন্ধানে এই প্রশ্নটি এসেছে, তাই আমি এসকিউএল-এর তাদের 'গন্ধ' এর জন্য উত্তর যুক্ত করব:

SELECT ColumnName
FROM DBC.Columns
WHERE DatabaseName='DBASE_NAME'
AND TableName='TABLE_NAME';

তথ্যটি ডিবিসি ডিবেসে সঞ্চিত রয়েছে।

ডেটা প্রকারগুলি পাওয়া আরও খানিকটা জড়িত: টেরাদাতা সিস্টেম সারণীগুলি ব্যবহার করে কলামের ধরণ পান


-1

এটা চেষ্টা কর

select * from sys.all_columns c join sys.objects o on c.object_id=o.object_id where o.name = 'TABLENAME' and c.name like '%COLUMN NAME%'

-3

আমি এটি এই মত করে

SELECT 
    TOP 0
    *
FROM
    Posts

এটি http://data.stackexchange.com এও কাজ করে যার পরিষেবা টেবিলগুলি সম্পর্কে আমি অবগত নই!


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