سؤال

لدي قائمة بالأعمدة أعطيتني عامل مشارك، لكن هذه الأعمدة موجودة في جداول مختلفة في DB. هل هناك نوع من الأداة في Sybase حيث يمكنني الاستعلام عن الجدول الذي ينتمي إليه العمود؟

(لقد جربت Google-Ing لهذا النوع من الأدوات، ولكن لا حظ حتى الآن)

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

المحلول

Syscolumns تحمل بيانات التعريف العمود.

حدد * من Syscolumns حيث الاسم =؛

عمود المعرف في Syscolumns هو معرف جدول العمود، في Sysobjects؛

select b.name as tablename, a.name as columnname
from syscolumns a join systables b on (a.id = b.id) 
where b.type='U' and b.name = 'foo';

يحصل جميع الأعمدة على الجدول المسمى 'foo'. النوع = 'U' يحدها إلى جداول المستخدم.

select b.name as tablename, a.name as columnname
from syscolumns a join systables b on (a.id = b.id) 
where b.type='U' and a.name = 'foo';

يحصل جميع الأعمدة المسماة "foo".

ستستخدم معظم الإصدار الحالي من ASE sysbojects بدلا من systables

نصائح أخرى

اضطررت إلى إجراء بعض التغييرات الصغيرة لعملها:

select  b.name as tablename, 
        a.name as columnname
from    dbo.syscolumns a 
join    sysobjects     b on a.id = b.id
where   b.type='U' 
and     upper(a.name) like '%FOO%'      -- wildcard search for column name
and     b.name = 'bar'                  -- exclude tables
order by b.name

يمكنك العثور على المعلومات لأي عمود في:

SELECT * 
  FROM sys.syscolumns

إذا كنت تريد أن تعرف ما ينتمي إلى أي جدول

SELECT cname, tname 
  FROM sys.syscolumns
 WHERE tname IN ('col_1', 'col_2')

ملاحظة: يمكنني اختبار هذا في Sybase ASA 9.

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