سؤال

أنا أعمل على SQL Server 2008 DB يحتوي على العديد من الجداول في ذلك (حوالي 200). تحتوي العديد من هذه الجداول على حقل باسم "Createrdate". أحاول تحديد كل مخطط الطاولة مع هذا المجال الخاص.

هل هناك استعلام SQL للقيام بذلك؟

هل كانت مفيدة؟

المحلول

أود الاستعلام عن المعلومات_schema - وهذا يحتوي على وجهات نظر أكثر قابلية للقراءة أكثر من الجداول الأساسية.

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%create%'

نصائح أخرى

يمكنك أيضا محاولة القيام بذلك باستخدام أحد أدوات الطرف الثالث المتاحة لهذا الغرض.

الاستعلامات رائعة للبحث البسيط ولكن إذا كنت بحاجة إلى القيام بمزيد من التلاعب بالبيانات، ابحث عن المراجع ومثل هذا المكان الذي يمكنك فيه القيام بعمل أفضل بكثير بهذه الطريقة.

أيضا، هذه تأتي مفيدة للغاية عندما يتم تشفير بعض الكائنات وتحتاج إلى البحث عنها

أنا استخدم APEXSQL البحث وهو مجاني ولكن هناك أيضا الكثير (مجاني أيضا) في السوق مثل البوابة الحمراء أو حزمة أدوات SSMS.

  select object_name(c.object_id) as table_name
    , schema_name(t.schema_id) as schema_name
    from sys.columns c
    join sys.tables t on c.object_id = t.object_id
     where c.name=N'CreatedDate';

يحصل أكثر تعقيدا قليلا إذا كنت تريد أيضا خصائص الجدول أيضا، ولكن عليك الرجوع إلى مشاهدات كتالوج الكائنات مثل sys.tables., sys.columns. إلخ.

أفضله...

SELECT objParent.name AS parent, obj.name, col.*
FROM sysobjects obj 
    LEFT JOIN syscolumns col
        ON obj.id = col.id
    LEFT JOIN sysobjects objParent
        ON objParent.id = obj.parent_obj
WHERE col.name LIKE '%Comment%'
   OR obj.name LIKE '%Comment%'

أعلاه أنا أبحث عن "تعليق".

إسقاط علامات النسبة المئوية إذا كنت تريد تطابقا مباشرا.

يبحث هذا الجدول الجداول والحقول والأشياء مثل الأسماء الرئيسية الأساسية والقيود والمناظر، إلخ.

وعندما ترغب في البحث في StoreDProcs بعد القرد مع الجداول (وتحتاج إلى جعل Procs Match)، استخدم ما يلي ...

SELECT name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%Comment%'

نأمل أن يساعد، أجد هذان الاستفساران ليكون مفيدا للغاية.

بالنسبة لي، لدي فقط قراءة الوصول إلى الاستعلام حتى أحتاج إلى استخدام هذه الوظيفة في كثير من الأحيان هنا هو ما أستخدمه:

SELECT  *
FROM    INFORMATION_SCHEMA.TABLES
where   TABLES.TABLE_NAME like '%your table name here%'

يمكنك استبدال. مع. بالكولومين ثم سيبدو هكذا:

 SELECT *
 FROM   INFORMATION_SCHEMA.COLUMNS
 WHERE  columns.COLUMN_NAME like '%your column name here%'

استخدم هذا الاستعلام:

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 '%' + '<ColumnName>' + '%' )
    AND 
    ( t.type = 'U' ) -- Use This To Prevent Selecting System Tables

نفس الشيء ولكن في طريقة ANSI

حدد * من المعلومات_schema.tables حيث table_name في (حدد table_name من information_schema.columns حيث column_name = 'country')

لا تحتاج إلى كتابة استعلام SQL لهذا في SQL Server 2008.

في SSMS Object Explorer، اختر قواعد بيانات أو جداول قاعدة البيانات المطلوبة (إذا كنت بحاجة إلى البحث في قاعدة بيانات واحدة)، وفتح عرض القائمة -> تفاصيل مستكشف الكائنات (بدلا من ذلك، اضغط على F7)، ونوع٪ CreateDDate٪ في مربع نص البحث، أدخل، استمتع

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top