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

Cách OBJECTPROPERTYEX () hoạt động trong SQL Server

Trong SQL Server, OBJECTPROPERTYEX() hàm trả về thông tin về các đối tượng trong phạm vi lược đồ trong cơ sở dữ liệu hiện tại.

Hàm này hoạt động giống hệt như OBJECTPROPERTY() , ngoại trừ việc nó hỗ trợ nhiều thuộc tính hơn và giá trị trả về cũng khác. OBJECTPROPERTYEX() hàm trả về sql_variant nhập, trong khi OBJECTPROPERTY() trả về một int loại.

Cú pháp

Hàm chấp nhận hai đối số:ID của đối tượng và thuộc tính bạn muốn trả về.

OBJECTPROPERTYEX ( id , property )

Ví dụ 1 - Cách sử dụng cơ bản

Dưới đây là một ví dụ để chứng minh cách sử dụng cơ bản của chức năng này.

SELECT OBJECTPROPERTYEX('885578193', 'BaseType') AS Result;

Kết quả:

+----------+
| Result   |
|----------|
| U        |
+----------+

Trong trường hợp này, có một đối tượng có ID là 885578193 và đó là một cái bàn. BaseType của đối tượng này là U.

Ví dụ 2 - Đặt tên cho Đối tượng

Trong ví dụ trước, tôi đã biết ID của đối tượng. Trong hầu hết các trường hợp, bạn có thể chỉ biết tên của đối tượng chứ không biết ID của nó. Trong những trường hợp như vậy, bạn có thể sử dụng OBJECT_ID() để lấy ID của đối tượng, dựa trên tên của nó.

Như thế này:

SELECT OBJECTPROPERTYEX(OBJECT_ID(N'Artists'), 'BaseType') AS Result;

Kết quả:

+----------+
| Result   |
|----------|
| U        |
+----------+

Ví dụ 3 - Thuộc tính khác

Dưới đây là một ví dụ trả về nhiều thuộc tính hơn mà bạn sẽ không được trả lại với OBJECTPROPERTY() .

USE WideWorldImportersDW;
DECLARE @objectId int = OBJECT_ID(N'Integration.GenerateDateDimensionColumns');
SELECT 
  OBJECTPROPERTYEX(@objectId, 'BaseType') AS BaseType,
  OBJECTPROPERTYEX(@objectId, 'IsPrecise') AS IsPrecise,
  OBJECTPROPERTYEX(@objectId, 'SystemDataAccess') AS SystemDataAccess,
  OBJECTPROPERTYEX(@objectId, 'UserDataAccess') AS UserDataAccess;

Kết quả:

+------------+-------------+--------------------+------------------+
| BaseType   | IsPrecise   | SystemDataAccess   | UserDataAccess   |
|------------+-------------+--------------------+------------------|
| IF         | 0           | 1                  | 1                |
+------------+-------------+--------------------+------------------+

Khi viết, OBJECTPROPERTYEX() chức năng hỗ trợ 109 thuộc tính. Xem bên dưới để biết danh sách đầy đủ các thuộc tính được hỗ trợ bởi chức năng này.

Ví dụ 4 - Trong mệnh đề WHERE

Bạn có thể sử dụng OBJECTPROPERTYEX() trong một WHERE nếu được yêu cầu.

Trong ví dụ này, tôi chạy hai truy vấn:một truy vấn trả về các bảng có khóa ngoại và một truy vấn trả về các bảng được tham chiếu bởi khóa ngoại.

USE Music;
SELECT 
  SCHEMA_NAME(schema_id) AS [Schema], 
  name AS [Table]
FROM sys.tables
WHERE OBJECTPROPERTYEX(object_id, 'TableHasForeignKey') = 1;

SELECT 
  SCHEMA_NAME(schema_id) AS [Schema], 
  name AS [Table]
FROM sys.tables
WHERE OBJECTPROPERTYEX(object_id, 'TableHasForeignRef') = 1;

Kết quả:

Changed database context to 'Music'.
+----------+---------+
| Schema   | Table   |
|----------+---------|
| dbo      | Artists |
| dbo      | Albums  |
+----------+---------+
(2 rows affected)
+----------+---------+
| Schema   | Table   |
|----------+---------|
| dbo      | Artists |
| dbo      | Genres  |
| dbo      | Country |
+----------+---------+
(3 rows affected)

Danh sách đầy đủ các thuộc tính

Đây là danh sách đầy đủ các thuộc tính được hỗ trợ bởi OBJECTPROPERTYEX() chức năng:

  • BaseType
  • CnstIsClustKey
  • CnstIsColumn
  • CnstIsDeleteCascade
  • CnstIsDisabled
  • CnstIsNonclustKey
  • CnstIsNotRepl
  • CnstIsNotTrusted
  • CnstIsUpdateCascade
  • ExecIsAfterTrigger
  • ExecIsAnsiNullsOn
  • ExecIsDeleteTrigger
  • ExecIsFirstDeleteTrigger
  • ExecIsFirstInsertTrigger
  • ExecIsFirstUpdateTrigger
  • ExecIsInsertTrigger
  • ExecIsInsteadOfTrigger
  • ExecIsLastDeleteTrigger
  • ExecIsLastInsertTrigger
  • ExecIsLastUpdateTrigger
  • ExecIsQuotedIdentOn
  • ExecIsStartup
  • ExecIsTriggerDisabled
  • ExecIsTriggerNotForRepl
  • ExecIsUpdateTrigger
  • ExecIsWithNativeCompilation
  • HasAfterTrigger
  • HasDeleteTrigger
  • HasInsertTrigger
  • HasInsteadOfTrigger
  • HasUpdateTrigger
  • IsAnsiNullsOn
  • IsCheckCnst
  • IsConstraint
  • IsDefault
  • IsDefaultCnst
  • IsDeterministic
  • IsEncrypto
  • Được thực thi
  • IsExtendedProc
  • IsForeignKey
  • IsIndexed
  • Có thể lập chỉ mục
  • IsInlineFunction
  • IsMSShipped
  • IsPrecise
  • IsPrimaryKey
  • Quy trình thực hiện
  • IsQuotedIdentOn
  • IsQueue
  • IsReplProc
  • IsRule
  • IsScalarFunction
  • IsSchemaBound
  • IsSystemTable
  • IsSystemVerified
  • IsTable
  • IsTableFunction
  • IsTrigger
  • IsUniqueCnst
  • IsUserTable
  • IsView
  • OwnerId
  • SchemaId
  • SystemDataAccess
  • TableDeleteTrigger
  • TableDeleteTriggerCount
  • TableFullTextMergeStatus
  • TableFullTextBackgroundUpdateIndexOn
  • TableFulltextCatalogId
  • TableFullTextChangeTrackingOn
  • TableFulltextDocsProcessed
  • TableFulltextFailCount
  • TableFulltextItemCount
  • TableFulltextKeyColumn
  • TableFulltextPendingChanges
  • TableFulltextPopulateStatus
  • TableFullTextSemanticExtraction
  • TableHasActiveFulltextIndex
  • TableHasCheckCnst
  • TableHasClustIndex
  • TableHasDefaultCnst
  • TableHasDeleteTrigger
  • TableHasForeignKey
  • TableHasForeignRef
  • TableHasIdentity
  • TableHasIndex
  • TableHasInsertTrigger
  • TableHasNonclustIndex
  • TableHasPrimaryKey
  • TableHasRowGuidCol
  • TableHasTextImage
  • TableHasTimestamp
  • TableHasUniqueCnst
  • TableHasUpdateTrigger
  • TableHasVarDecimalStorageFormat
  • TableInsertTrigger
  • TableInsertTriggerCount
  • TableIsFake
  • TableIsLockedOnBulkLoad
  • TableIsMemoryOptimized
  • TableIsPinned
  • TableTextInRowLimit
  • TableUpdateTrigger
  • TableUpdateTriggerCount
  • UserDataAccess
  • TableHasColumnSet
  • Cardinality
  • TableTemporalType

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

Đồng thời xem OBJECTPROPERTY() so với OBJECTPROPERTYEX() để được giải thích chi tiết hơn về sự khác biệt giữa hai chức năng này.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thay thế một chuỗi bằng một chuỗi khác trong SQL Server (T-SQL)

  2. Làm thế nào để chuyển đổi số phút sang định dạng hh:mm trong TSQL?

  3. Làm cách nào để chọn dữ liệu của một bảng từ một cơ sở dữ liệu khác trong SQL Server?

  4. câu lệnh sử dụng sql với biến

  5. Cách tốt để cắt tất cả các ký tự khoảng trắng khỏi một chuỗi trong T-SQL mà không có UDF và không có CLR là gì?