Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

3 cách để lấy kiểu dữ liệu của cột trong SQL Server (T-SQL)

GUI như SSMS hoặc Azure Data Studio giúp bạn dễ dàng xem loại dữ liệu của cột. Thông thường, việc điều hướng đến cột trong trình khám phá đối tượng là một vấn đề đơn giản và bạn có thể thấy loại dữ liệu ngay bên cạnh cột.

Nhưng nếu bạn đang sử dụng T-SQL, bạn sẽ cần phải chạy một truy vấn.

information_schema.columns Xem

information_schema.columns xem là một lựa chọn tốt nếu bạn chỉ muốn loại dữ liệu và không muốn:

SELECT 
    COLUMN_NAME, 
    DATA_TYPE, 
    CHARACTER_MAXIMUM_LENGTH AS MAX_LENGTH, 
    CHARACTER_OCTET_LENGTH AS OCTET_LENGTH 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'Products' 
AND COLUMN_NAME = 'ProductName';

Kết quả mẫu:

+---------------+-------------+--------------+----------------+
| COLUMN_NAME   | DATA_TYPE   | MAX_LENGTH   | OCTET_LENGTH   |
|---------------+-------------+--------------+----------------|
| ProductName   | varchar     | 255          | 255            |
+---------------+-------------+--------------+----------------+

Thay thế ProductsProductName với tên của bảng và cột của bạn tương ứng.

OK, tôi đã trả về nhiều hơn một chút ngoài kiểu dữ liệu ở đây. Nhưng bạn có thể bỏ qua các cột khác nếu cần. Hoặc bạn có thể thêm nhiều hơn nữa. Ví dụ:có các cột chứa độ chính xác của cột trong trường hợp bạn đang xem cột số hoặc cột ngày giờ.

Bạn có thể trả về tất cả các cột như sau:

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'Products' 
AND COLUMN_NAME = 'ProductName';

sys.columns Xem

sys.columns xem là một tùy chọn khác. Chúng ta có thể kết hợp điều này với sys.tables xem để lấy một cột cụ thể từ một bảng cụ thể:

SELECT 
    c.name,
    type_name(c.system_type_id) AS system_type,
    type_name(c.user_type_id) AS user_type,
    c.max_length,
    c.precision,
    c.scale
FROM sys.tables t 
JOIN sys.columns c ON t.object_id = c.object_id
WHERE t.name = 'Products'
AND c.name = 'ProductName';

Kết quả mẫu:

+-------------+---------------+-------------+--------------+-------------+---------+
| name        | system_type   | user_type   | max_length   | precision   | scale   |
|-------------+---------------+-------------+--------------+-------------+---------|
| ProductName | varchar       | varchar     | 255          | 0           | 0       |
+-------------+---------------+-------------+--------------+-------------+---------+

Một lần nữa, hãy bao gồm nhiều hoặc ít cột hơn theo yêu cầu.

Trong ví dụ này, tôi đã sử dụng TYPE_NAME() hàm để trả về tên của kiểu dữ liệu, dựa trên ID của nó. Điều này đã giúp tôi không phải tham gia vào sys.types bảng.

sp_help Thủ tục được lưu trữ

sp_help thủ tục được lưu trữ có thể hữu ích nếu bạn muốn trả lại thêm thông tin về bảng.

Thủ tục được lưu trữ này trả về thông tin về một đối tượng cơ sở dữ liệu (bất kỳ đối tượng nào được liệt kê trong sys.sysobjects chế độ xem tương thích), kiểu dữ liệu do người dùng xác định hoặc kiểu dữ liệu:

EXEC sp_help Products;

Điều này trả lại rất nhiều đầu ra, vì vậy tôi sẽ không liệt kê tất cả ở đây.

Chỉ cần thay thế Products với tên của bảng hoặc đối tượng khác mà bạn muốn lấy thông tin.

Lấy loại dữ liệu của cột từ truy vấn

Bạn cũng có thể lấy kiểu dữ liệu của các cột do truy vấn trả về.

Xem Tìm hiểu kiểu dữ liệu của các cột được trả về trong tập kết quả trong SQL Server để biết thêm thông tin và ví dụ.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thêm số dòng trong SQL Server Management Studio (SSMS) - Hướng dẫn SQL Server / TSQL Phần 11

  2. Cách điều chỉnh hiệu suất của SQL Server, Azure SQL Database và Amazon RDS

  3. Mẹo để giảm độ phức tạp của máy chủ SQL của bạn

  4. Không thể bắt đầu một giao dịch phân tán

  5. Trong SQL, làm cách nào bạn có thể nhóm theo phạm vi?