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

Sử dụng COLUMNPROPERTY () để trả về thông tin cột hoặc thông số trong SQL Server

Trong SQL Server, COLUMNPROPERTY() hàm trả về thông tin cột hoặc thông số.

Ví dụ:bạn có thể sử dụng nó để trả về thông tin về một cột trong bảng, một tham số cho một thủ tục được lưu trữ, v.v.

Nó chấp nhận ba đối số:ID của bảng hoặc thủ tục, cột hoặc thông số áp dụng và thuộc tính bạn muốn biết thông tin.

Cú pháp

Cú pháp như sau:

COLUMNPROPERTY ( id , column , property )

Ví dụ 1 - Truy vấn một bảng

Trong ví dụ này, tôi nhận được thông tin về một cột trong bảng.

USE Music;
SELECT 
  COLUMNPROPERTY(OBJECT_ID('Artists'), 'ArtistId', 'AllowsNull') AS [Result];

Kết quả:

+----------+
| Result   |
|----------|
| 0        |
+----------+

Trong trường hợp này, cột ArtistId không cho phép giá trị NULL.

Hãy chuyển sang một cột khác:

SELECT 
  COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'AllowsNull') AS [ActiveFrom],
  COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Precision') AS [Precision],
  COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Scale') AS [Scale];

Kết quả:

+--------------+-------------+---------+
| ActiveFrom   | Precision   | Scale   |
|--------------+-------------+---------|
| 1            | 10          | 0       |
+--------------+-------------+---------+

Trong trường hợp này, cột ActiveFrom không cho phép các giá trị NULL. Nó cũng có độ chính xác là 10 và thang điểm là 0.

Bạn sẽ nhận thấy rằng tôi sử dụng OBJECT_ID() hàm trả về ID của bảng. Nếu không có chức năng này, tôi cần biết ID (hoặc tôi cần thực hiện một truy vấn khác chỉ để lấy ID).

Đây là nội dung OBJECT_ID() trả về trong ví dụ trên:

SELECT OBJECT_ID('Artists') AS Result;

Kết quả:

+-----------+
| Result    |
|-----------|
| 885578193 |
+-----------+

Vì vậy, bây giờ chúng tôi đã biết ID, chúng tôi có thể chuyển ID đó vào COLUMNPROPERTY() chức năng thay thế:

SELECT 
  COLUMNPROPERTY(885578193, 'ActiveFrom', 'AllowsNull') AS [ActiveFrom],
  COLUMNPROPERTY(885578193, 'ActiveFrom', 'Precision') AS [Precision],
  COLUMNPROPERTY(885578193, 'ActiveFrom', 'Scale') AS [Scale];

Kết quả:

+--------------+-------------+---------+
| ActiveFrom   | Precision   | Scale   |
|--------------+-------------+---------|
| 1            | 10          | 0       |
+--------------+-------------+---------+

Ví dụ 2 - Truy vấn một thủ tục

Trong ví dụ này, tôi nhận được thông tin về một tham số của một thủ tục được lưu trữ.

USE Music;
SELECT 
  COLUMNPROPERTY(
      OBJECT_ID('dbo.uspGetAlbumsByArtist'), 
      '@ArtistId', 
      'IsOutParam') AS [Result];

Kết quả:

+----------+
| Result   |
|----------|
| 0        |
+----------+

Vì vậy, nó hoàn toàn giống nhau về cú pháp. Trong trường hợp này, tham số @ArtistId không phải là tham số đầu ra.

Danh sách đầy đủ các tùy chọn

Đây là danh sách đầy đủ các đối số mà bạn có thể chuyển tới COLUMNPROPERTY() tại thời điểm viết bài:

  • AllowsNull
  • ColumnId
  • FullTextTypeColumn
  • GeneratedAlwaysType
  • IsColumnSet
  • IsComputed
  • IsCursorType
  • IsDeterministic
  • IsFulltextIndexed
  • IsHidden
  • IsIdentity
  • IsIdNotForRepl
  • Có thể lập chỉ mục
  • IsOutParam
  • IsPrecise
  • IsRowGuidCol
  • IsSparse
  • IsSystemVerified
  • IsXmlIndexable
  • Độ chính xác
  • Quy mô
  • StatisticalSemantics
  • SystemDataAccess
  • UserDataAccess
  • Công dụngAnsiTrim

Xem tài liệu của Microsoft để biết giải thích chi tiết về từng thuộc tính.

Cũng xem OBJECTPROPERTYEX() cho một hàm tương tự trả về thông tin về các đối tượng trong phạm vi lược đồ thay vì cơ sở dữ liệu và DATABASEPROPERTYEX() trả về thông tin thuộc tính cho cơ sở dữ liệu.


  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ó thể chọn dữ liệu máy chủ sql bằng cách sử dụng vị trí thứ tự cột không

  2. Sử dụng TYPE_ID () để lấy ID của một loại dữ liệu trong SQL Server

  3. Cách thực hiện THAM GIA ANTI SEMI TRÁI trong SQL Server

  4. Cách tốt nhất để tự động tạo câu lệnh INSERT cho bảng SQL Server là gì?

  5. SQL Server sp_msforeachtable sử dụng để chỉ chọn những bảng đáp ứng một số điều kiện