নির্দিষ্ট কলামের নামযুক্ত ডিবিতে সমস্ত সারণী সন্ধান করতে কীভাবে একটি ক্যোয়ারী লিখবেন


12

আমি প্রায় 100 টি টেবিল সহ একটি ডাটাবেস পেয়েছি এবং এর মধ্যে দুটি থেকে নির্দিষ্ট ডেটা পেতে আমার একটি জয়েন্ট কোয়েরি তৈরি করতে হবে। আমি একজনকে জানি তবে অন্যটিও নয়। মূলত আমার এমন কিছু দরকার:

select <tables> from <database> where exists table.column name;

কিভাবে আমি এটি করতে পারব?


6
আমার উত্তরটি এসকিউএল সার্ভার ধরে নিয়েছে। আপনি যে আরডিবিএমএসের সাথে কাজ করছেন তা কি?
থমাস স্ট্রিংগার

উত্তর:


21

ব্যবহার information_schema

এটি মান-সম্মতিযুক্ত ক্রস-আরডিবিএমএস উপায় এটি।

SELECT table_catalog, table_schema, table_name, column_name
FROM INFORMATION_SCHEMA.columns
WHERE column_name = '<your column name>';

আপনি এই নথিভুক্ত দেখতে পারেন


5
কেন ব্যবহার করবেন না INFORMATION_SCHEMA, আমাদের নিজস্ব @ অ্যারোনবার্ট্রান্ডের মাধ্যমে ( স্ক্যুয়ালব্লগ. com/ blogs/ aaron_bertrand/ archive/ 2011/ 11/ 03/ )
টমাস স্ট্রিংগার

2
@ থমাস স্ট্রিংগার আমি সম্মত তবে ওপি কোনও ডিবিএমএস ট্যাগ দিয়ে প্রশ্নটি ট্যাগ করেনি।
ypercubeᵀᴹ

@ থমাসস্ট্রিঞ্জার একটি সত্যিকারের ডাটাবেস ব্যবহার করুন, ব্যাট থেকে সরাসরি পোস্টগ্রাইএসকিউএল ২০০ information_schema.columns2006 সাল থেকে আইডেন্টিটি কলামগুলিকে সমর্থন করেছে them এমনকি এগুলি কার্যকর করার পূর্বে পুরো দশক। মাইক্রোসফ্ট এসকিউএল যদি মানটিকে সমর্থন করে না, সম্ভবত আমাদের সেগুলি ঠেকানো উচিত। অন্যরা করেন।
ইভান ক্যারল

5

আইবিএম ডিবি 2 এর জন্য আপনি নিম্নলিখিতগুলি ব্যবহার করবেন:

select tabschema,tabname from syscat.columns where colname = 'COLUMN_NAME'

মনে রাখবেন যে ডিবি 2-তে, কলামের নামগুলি বড় হাতের অক্ষরে থাকবে না যদি না এগুলি উপরের ক্ষেত্রে বাদে অন্য কিছু দিয়ে ডাবল কোটের ভিতরে সংজ্ঞায়িত করা হয়। তারপরে আপনাকে পাশাপাশি কলামের নামের সঠিক আবরণ সরবরাহ করতে হবে ।


1
কলাম যেখানে কোট (যা এড়িয়ে চলা উচিত) ব্যবহার করে সংজ্ঞায়িত থাকে, তাহলে আপনি উপরের ক্ষেত্রে colname রুপান্তর ঊর্ধ্ব বা UCASE ফাংশন ব্যবহার করতে পারেন: WHERE UPPER(colname) = 'COLUMN_NAME'
লেনার্ট

3

নীচের ক্যোয়ারিতে আপনাকে যা সন্ধান করা উচিত তা দেওয়া উচিত:

use YourDatabase;
go

select
    object_schema_name(t.object_id) + '.' + t.name as table_name,
    c.name as column_name
from sys.tables t
inner join sys.columns c
on t.object_id = c.object_id
where c.name like '%ColumnSearchText%';

আপনি যদি একটি সঠিক নামের কলামগুলি সন্ধান করছেন, তবে কেবল এই WHEREধারাটি প্রতিস্থাপন করুন :

where c.name = 'ColumnSearchText';

0

তেরেদাতা 15:

SELECT DATABASENAME||'.'||TABLENAME AS FULL_TABLENAME,
COUNT(1) AS NUMBER_OF_COLUMNS
FROM DBC.COLUMNSV
WHERE 1 = 1
AND COLUMNNAME LIKE '%<YOUR COLUMNNAME HERE>%'
GROUP BY 1


0
SELECT * FROM _v_sys_columns WHERE COLUMN_NAME='$COLUMN_NAME'

দয়া করে কলামের নামটি এই পরিবর্তনশীলটিতে দিন: $COLUMN_NAME


-3

// বিশেষ টেবিলটি নির্বাচন করুন:

SYNTAX:
       SELECT COLUMN_NAME FROM TABLE_NAME WHERE COLUMN_NAME='VALUE';
EXAMPLE:
       SELECT PERSON_NAME FROM PERSON WHERE PERSON_ID=1;

আপনি সম্ভবত ওপি-র প্রশ্নটি ভুলভাবে পড়েছেন, আপনার উত্তর যা জিজ্ঞাসা করা হয়েছিল তার উত্তর দেয় না।
লেনার্ট

-3

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

SELECT name 
FROM sysobjects 
WHERE id IN 
( 
    SELECT id 
    FROM syscolumns 
    WHERE name = 'EXACT_COLUMN_NAME_TO_SEARCH'
)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.