2013-02-11 21 views
14

tôi có thể lấy số lượng cột trong một cơ sở dữ liệu SQL Server với điều này:có được SQL cơ bản thông tin cấu trúc bảng Máy chủ

SELECT COUNT(*) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_name = 'Address' 

Nhưng có cách nào (đối với một số không rõ các cột) Tôi có thể lấy tên và kiểu dữ liệu và độ dài của mỗi cột?

+5

Ý của bạn là gì ?. Nếu bạn thực hiện 'SELECT *' thay cho 'SELECT COUNT (*)', bạn sẽ nhận được tên cột, kiểu dữ liệu, độ dài và thông tin thêm về các cột – Lamak

+0

Bạn đã có bảng 'INFORMATION_SCHEMA.COLUMNS', chính xác là gì Ở đó? – LittleBobbyTables

+0

@LittleBobbyTables Vâng, điều đó chỉ cho tôi biết số cột, không phải tên hoặc kiểu dữ liệu hoặc độ dài của chúng. – 1252748

Trả lời

43

Thay vì sử dụng count(*) bạn có thể SELECT * và bạn sẽ trở lại tất cả các chi tiết mà bạn muốn bao gồm data_type:

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_name = 'Address' 

MSDN Documents trên INFORMATION_SCHEMA.COLUMNS

+0

có, đây là chính xác những gì tôi cần. Có tồn tại bất kỳ chức năng để chuyển các thông tin trả lại bởi điều này vào một tuyên bố mà tạo ra một bảng giống hệt nhau? Cảm ơn bạn. – 1252748

+0

@thomas Bạn có thể sử dụng sql động và tạo chuỗi sql có thể được thực thi để tạo bảng mới. – Taryn

+0

@thomas bạn có thể sử dụng một cái gì đó tương tự như mã trong bản demo ff sql này - http://www.sqlfiddle.com/#!3/24970/9 – Taryn

15

sp_help sẽ cung cấp cho bạn một bó toàn bộ thông tin về một bảng bao gồm các cột, khóa và ràng buộc. Ví dụ: chạy

exec sp_help 'Address' 

sẽ cung cấp cho bạn thông tin về Địa chỉ.

3

Name and datatype:

USE OurDatabaseName 
GO 

SELECT 
    sc.name AS [Columne Name], 
    st1.name AS [User Type], 
    st2.name AS [Base Type] 
FROM dbo.syscolumns sc 
    INNER JOIN dbo.systypes st1 ON st1.xusertype = sc.xusertype 
    INNER JOIN dbo.systypes st2 ON st2.xusertype = sc.xtype 
-- STEP TWO: Change OurTableName to the table name 
WHERE sc.id = OBJECT_ID('OurTableName') 
ORDER BY sc.colid 

Hoặc:

SELECT COLUMN_NAME AS ColumnName, DATA_TYPE AS DataType, CHARACTER_MAXIMUM_LENGTH AS CharacterLength 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'OurTableName' 
0

Đối với tổng thông tin cột sử dụng dưới cú pháp: Sử dụng "dbname" đi Exec SP_Columns "TableName"

Đối với tổng thông tin bảng sử dụng cú pháp bên dưới: Sử dụng "DBName" go Exec SP_help "Tên bảng"

1

Viết tên bảng trong trình soạn thảo truy vấn chọn tên và nhấn Alt + F1 và nó sẽ mang tất cả thông tin của bảng.

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