টেবিলের নাম অনুসন্ধান করুন


102

আমি আমার সঞ্চিত পদ্ধতিতে স্ট্রিংগুলি অনুসন্ধান করতে নিম্নলিখিতটি ব্যবহার করি:

use DBname
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%xxx%'

উপরোক্ত সংশোধন করা কি সহজ? যাতে এটি সুনির্দিষ্ট ডিবি "ডিবি নাম" এ সারণির নামগুলি সন্ধান করে?

উত্তর:



87
select name
  from DBname.sys.tables
 where name like '%xxx%'
   and is_ms_shipped = 0; -- << comment out if you really want to see them

লাইনটি মন্তব্য করা খুব and is_ms_shipped = 0;বেশি বলে মনে হচ্ছে না
কেন

4
এটি সাধারণত যে জিনিসটি গোপন করে তা হ'ল ডাটাবেস চিত্র চিত্র সমর্থন টেবিল, বা কেবল একটিই রয়েছে। ফাংশন / পদ্ধতি অনুসন্ধান করার সময় এটি আরও কার্যকর।
রিচার্ডকিউই

স্কিমা নাম যুক্ত করবেন না কেন? t.schema_id, s.name, t.Name DBNAME.sys.tables টি হিসাবে t.schema_id = s.schema_id তে অন্তর্ভুক্ত হয়ে DBNAME.sys.schemas হিসাবে t হিসাবে নাম নির্বাচন করুন যেখানে t.name '% yourtomotosearch%' এবং is_ms_shped = 0
অ্যাক্রোনোস

11

আপনি যদি সমস্ত ডেটাবেস সার্ভার- ওয়াইডের সমস্ত টেবিলগুলিতে সন্ধান করতে চান এবং আউটপুট পেতে চান তবে আপনি অনিবন্ধিত এসপি_এমএসফারাচডিবি পদ্ধতিটি ব্যবহার করতে পারেন :

sp_MSforeachdb 'SELECT "?" AS DB, * FROM [?].sys.tables WHERE name like ''%Table_Names%'''

4
কোনও উত্তর সারণী কোন ডাটাবেসে থাকতে পারে তা আপনি যদি জানেন না
ম্যাথু

7

আমি ধরে নিচ্ছি আপনি ডাটাবেসের নামটি প্যারামিটার হিসাবে পাস করতে চান এবং কেবল চালান না:

SELECT  *
FROM    DBName.sys.tables
WHERE   Name LIKE '%XXX%'

যদি তা হয় তবে আপনি কোয়েরিতে ডিবি নাম যুক্ত করতে ডায়নামিক এসকিউএল ব্যবহার করতে পারেন:

DECLARE @DBName NVARCHAR(200) = 'YourDBName',
        @TableName NVARCHAR(200) = 'SomeString';

IF NOT EXISTS (SELECT 1 FROM master.sys.databases WHERE Name = @DBName)
    BEGIN
        PRINT 'DATABASE NOT FOUND';
        RETURN;
    END;

DECLARE @SQL NVARCHAR(MAX) = '  SELECT  Name
                                FROM    ' + QUOTENAME(@DBName) + '.sys.tables
                                WHERE   Name LIKE ''%'' + @Table + ''%''';

EXECUTE SP_EXECUTESQL @SQL, N'@Table NVARCHAR(200)', @TableName;

5

আপনি এতে নির্দিষ্ট স্ট্রিং সহ টেবিলগুলি ফিল্টার করতে ফিল্টার বোতামটিও ব্যবহার করতে পারেন। সঞ্চিত পদ্ধতি এবং দর্শন দিয়ে আপনি একই কাজ করতে পারেন।

এখানে চিত্র বর্ণনা লিখুন


4

@ [রিচার্ডকিকি] এর উত্তরে যুক্ত করা হচ্ছে।

আমি যখনই টেবিলগুলির একটি তালিকা অনুসন্ধান করি, সাধারণভাবে আমি সেগুলি থেকে নির্বাচন করতে বা সেগুলি মুছতে চাই। নীচে একটি স্ক্রিপ্ট আপনার জন্য সেই স্ক্রিপ্ট তৈরি করে।

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

select 'select ''' + name + ''' as TableName, * from ' + name as SelectTable,
'delete from ' + name as DeleteTable
from sys.tables
where name like '%xxxx%'
and is_ms_shipped = 0; 

3

আমি জানি এটি একটি পুরানো থ্রেড, তবে আপনি যদি কেস-সংবেদনশীল অনুসন্ধান পছন্দ করেন:

SELECT * FROM INFORMATION_SCHEMA.TABLES 
WHERE Lower(TABLE_NAME) LIKE Lower('%%')


2

আপনার কাছে থাকা প্রতিটি স্কিমাটির জন্য আমি একটি সাধারণ সমাধান পোস্ট করতে চাই। আপনি যদি মাইএসকিউএল ডিবি ব্যবহার করে থাকেন তবে আপনি কেবল নিজের স্কিমা থেকে সমস্ত টেবিলের নাম পেতে পারেন এবং এটিতে WHIE-LIKE শর্ত যুক্ত করতে পারেন। আপনি নিম্নলিখিত কমান্ড লাইনের সাহায্যে এটি করতে পারেন:

SHOW TABLES WHERE tables_in_<your_shcema_name> LIKE '%<table_partial_name>%';

যেখানে tables_in_<your_shcema_name>কলামের SHOW TABLESকমান্ডের নাম ফিরে আসে ।

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