2009-04-06 21 views
7

Tôi có một danh sách các cột mà một đồng nghiệp đã trao cho tôi, nhưng các cột này nằm trong các bảng khác nhau trong DB. Có một số loại công cụ trong Sybase, nơi tôi có thể truy vấn bảng một cột thuộc về?Làm cách nào để xem siêu dữ liệu cột trong Sybase?

(Tôi đã thử Google cho loại công cụ này nhưng không may mắn cho đến thời điểm này)

Trả lời

17

syscolumns chứa siêu dữ liệu cột.

chọn * từ syscolumns nơi name =;

Cột id trong syscolumns là id của bảng của cột, trong sysobject;

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'; 

lấy tất cả các cột cho bảng có tên 'foo'. Loại = 'U' giới hạn nó vào bảng người dùng.

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'; 

nhận tất cả các cột có tên 'foo'.

Hầu hết các phiên bản hiện tại của ASE sẽ sử dụng sysbojects thay vì systables

+1

Cảm ơn! Có điều này thực sự giúp. Tôi cũng tìm thấy một sơ đồ của Sybase ASE hiển thị câu trả lời của bạn: http://download.sybase.com/pdfdocs/asg1250e/poster.pdf –

+6

Trong phiên bản sau này của Sybase, bạn cần sử dụng sysobjects thay vì systables – brianegge

+0

tôi đã cố gắng chọn * từ các cột syscolumn và không có cột nào trong các bảng của tôi hiển thị –

3

tôi đã thực hiện một vài thay đổi nhỏ cho nó hoạt động:

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 
+0

Tôi đoán bạn có nghĩa là b.name! = 'Bar' – karakfa

+0

Đây là câu trả lời duy nhất hoạt động trong trường hợp của tôi. – user1477388

0

Bạn có thể tìm thấy thông tin cho bất kỳ cột trong:

SELECT * 
    FROM sys.syscolumns 

Nếu bạn muốn biết cột nào thuộc về:

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

LƯU Ý: tôi thử nghiệm này trong Sybase ASA 9.

Các vấn đề liên quan