Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SCHEMA_NAME () SQL सर्वर में कैसे काम करता है

SQL सर्वर में, आप SCHEMA_NAME() . का उपयोग कर सकते हैं किसी विशेष स्कीमा का नाम वापस करने के लिए कार्य। जिस तरह से यह काम करता है वह यह है कि यह स्कीमा आईडी से जुड़ा स्कीमा नाम देता है।

यदि आप फ़ंक्शन के लिए स्कीमा आईडी पास नहीं करते हैं, तो यह कॉलर के डिफ़ॉल्ट स्कीमा का नाम लौटाता है।

उदाहरण 1 - डिफ़ॉल्ट स्कीमा लौटाएं

यहां एक उदाहरण दिया गया है जो कॉलर के डिफ़ॉल्ट स्कीमा का नाम देता है।

SELECT SCHEMA_NAME() AS Result;

परिणाम:

+----------+
| Result   |
|----------|
| dbo      |
+----------+

यह कॉलर के डिफ़ॉल्ट स्कीमा का नाम देता है क्योंकि मैंने स्पष्ट रूप से कोई अन्य स्कीमा आईडी निर्दिष्ट नहीं किया है।

उदाहरण 2 - एक अलग स्कीमा निर्दिष्ट करें

इस उदाहरण में मैं फ़ंक्शन के लिए एक स्कीमा आईडी पास करता हूं।

SELECT SCHEMA_NAME(7) AS Result;

परिणाम:

+----------+
| Result   |
|----------|
| Fact     |
+----------+

उदाहरण 3 - डेटाबेस स्विच करना

पिछला उदाहरण सिर्फ एक डेटाबेस में चलाया गया था जिसमें 7 की आईडी के साथ एक स्कीमा था। अगर मैं एक अलग डेटाबेस पर स्विच करता हूं, तो मुझे एक अलग स्कीमा नाम मिल सकता है, या कोई नाम नहीं मिल सकता है।

मेरे कहने का एक उदाहरण यहां दिया गया है।

USE WideWorldImportersDW;
SELECT 
  SCHEMA_NAME(1) AS [1],
  SCHEMA_NAME(2) AS [2],
  SCHEMA_NAME(3) AS [3],
  SCHEMA_NAME(4) AS [4],
  SCHEMA_NAME(5) AS [5],
  SCHEMA_NAME(6) AS [6],
  SCHEMA_NAME(7) AS [7],
  SCHEMA_NAME(8) AS [8];

USE Music;
SELECT 
  SCHEMA_NAME(1) AS [1],
  SCHEMA_NAME(2) AS [2],
  SCHEMA_NAME(3) AS [3],
  SCHEMA_NAME(4) AS [4],
  SCHEMA_NAME(5) AS [5],
  SCHEMA_NAME(6) AS [6],
  SCHEMA_NAME(7) AS [7],
  SCHEMA_NAME(8) AS [8]; 

परिणाम:

Changed database context to 'WideWorldImportersDW'.
+-----+-------+--------------------+-----+-------------+-----------+------+-------------+
| 1   | 2     | 3                  | 4   | 5           | 6         | 7    | 8           |
|-----+-------+--------------------+-----+-------------+-----------+------+-------------|
| dbo | guest | INFORMATION_SCHEMA | sys | Application | Dimension | Fact | Integration |
+-----+-------+--------------------+-----+-------------+-----------+------+-------------+
(1 row affected)
Changed database context to 'Music'.
+-----+-------+--------------------+-----+------+------+------+------+
| 1   | 2     | 3                  | 4   | 5    | 6    | 7    | 8    |
|-----+-------+--------------------+-----+------+------+------+------|
| dbo | guest | INFORMATION_SCHEMA | sys | NULL | NULL | NULL | NULL |
+-----+-------+--------------------+-----+------+------+------+------+
(1 row affected)

चार कॉलम NULL लौटाते हैं संगीत डेटाबेस पर, क्योंकि उस आईडी के साथ कोई स्कीमा नहीं है।

उदाहरण 4 - अधिक पठनीय क्वेरी परिणाम

यहां SCHEMA_NAME() का उपयोग करने का एक उदाहरण दिया गया है सिस्टम दृश्य से परिणाम लौटाते समय इसकी आईडी के बजाय स्कीमा नाम प्रस्तुत करने के लिए।

SELECT 
  schema_id,
  SCHEMA_NAME(schema_id) AS [Schema Name],
  name AS [Table Name]
FROM sys.tables;

परिणाम:

+-------------+---------------+-------------------------+
| schema_id   | Schema Name   | Table Name              |
|-------------+---------------+-------------------------|
| 8           | Integration   | ETL Cutoff              |
| 8           | Integration   | Lineage                 |
| 8           | Integration   | Customer_Staging        |
| 8           | Integration   | Employee_Staging        |
| 8           | Integration   | Movement_Staging        |
| 8           | Integration   | Order_Staging           |
| 8           | Integration   | PaymentMethod_Staging   |
| 6           | Dimension     | City                    |
| 8           | Integration   | Purchase_Staging        |
| 6           | Dimension     | Customer                |
| 8           | Integration   | Sale_Staging            |
| 8           | Integration   | StockHolding_Staging    |
| 6           | Dimension     | Date                    |
| 8           | Integration   | StockItem_Staging       |
| 6           | Dimension     | Employee                |
| 8           | Integration   | Supplier_Staging        |
| 6           | Dimension     | Payment Method          |
| 8           | Integration   | Transaction_Staging     |
| 8           | Integration   | TransactionType_Staging |
| 6           | Dimension     | Stock Item              |
| 6           | Dimension     | Supplier                |
| 6           | Dimension     | Transaction Type        |
| 7           | Fact          | Movement                |
| 7           | Fact          | Order                   |
| 7           | Fact          | Purchase                |
| 7           | Fact          | Sale                    |
| 7           | Fact          | Stock Holding           |
| 7           | Fact          | Transaction             |
| 8           | Integration   | City_Staging            |
+-------------+---------------+-------------------------+

sys.tables सिस्टम व्यू स्कीमा आईडी देता है लेकिन उसका नाम नहीं। हालांकि यह कोई समस्या नहीं है। आईडी पर्याप्त है, क्योंकि हम SCHEMA_NAME() . का उपयोग कर सकते हैं उस आईडी के आधार पर स्कीमा का नाम प्रदर्शित करने के लिए।

अगर हमारे पास SCHEMA_NAME() नहीं होता फ़ंक्शन, हमें sys.schemas . पर एक जॉइन करना होगा केवल स्कीमा का नाम प्राप्त करने के लिए सिस्टम दृश्य।

उदाहरण 5 - WHERE क्लॉज में

यहां SCHEMA_NAME() का उपयोग करने का एक उदाहरण दिया गया है एक WHERE . में खंड।

USE WideWorldImportersDW;
SELECT * FROM sys.schemas
WHERE name = SCHEMA_NAME(7);

परिणाम:

+--------+-------------+----------------+
| name   | schema_id   | principal_id   |
|--------+-------------+----------------|
| Fact   | 7           | 1              |
+--------+-------------+----------------+

यदि आपको स्कीमा की आईडी प्राप्त करने की आवश्यकता है, तो SCHEMA_ID() . का उपयोग करें समारोह।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में "केवल एक अभिव्यक्ति को चयन सूची में निर्दिष्ट किया जा सकता है ..." को कैसे ठीक करें?

  2. कॉलम नाम या आपूर्ति किए गए मानों की संख्या तालिका परिभाषा से मेल नहीं खाती

  3. SQL सर्वर में डेटाबेस मेल सक्षम करें (T-SQL)

  4. प्रति समूह पहली पंक्ति का चयन

  5. दो तिथियों के बीच व्यावसायिक घंटों की गणना करें