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

SQL सर्वर में डेटा प्रकार की आईडी प्राप्त करने के लिए TYPE_ID() का उपयोग करें

SQL सर्वर में, आप TYPE_ID() . का उपयोग कर सकते हैं इसके नाम के आधार पर डेटा प्रकार की आईडी वापस करने के लिए कार्य करता है। यह उस सिस्टम दृश्य को क्वेरी करते समय उपयोगी हो सकता है जो डेटा प्रकार की आईडी संग्रहीत करता है लेकिन उसका नाम नहीं। नाम याद रखना आमतौर पर आसान होता है। आईडी याद रखना इतना आसान नहीं है।

आप TYPE_ID() use का उपयोग कर सकते हैं सिस्टम डेटा प्रकारों और उपयोगकर्ता-परिभाषित डेटा प्रकारों के लिए।

उदाहरण 1 - मूल उपयोग

यह कैसे काम करता है, यह दिखाने के लिए यहां एक बुनियादी उदाहरण दिया गया है।

SELECT TYPE_ID('varchar') AS Result;

परिणाम:

+----------+
| Result   |
|----------|
| 167      |
+----------+

यह परिणाम हमें बताता है कि varchar डेटा प्रकार की आईडी 167 है।

उदाहरण 2 - एक डेटाबेस उदाहरण

यहां TYPE_ID() का उपयोग करने का एक उदाहरण दिया गया है एक WHERE . में केवल किसी दिए गए डेटा प्रकार के परिणामों को फ़िल्टर करने के लिए क्लॉज।

SELECT 
  o.name AS [Object Name], 
  c.name AS [Column Name],  
  c.user_type_id AS [Type ID],
  TYPE_NAME(c.user_type_id) AS [Type Name]
FROM sys.objects AS o   
JOIN sys.columns AS c  ON o.object_id = c.object_id
JOIN sys.types t ON c.user_type_id = t.user_type_id
WHERE c.user_type_id = TYPE_ID('varchar');

परिणाम:

+---------------+---------------+-----------+-------------+
| Object Name   | Column Name   | Type ID   | Type Name   |
|---------------+---------------+-----------+-------------|
| Individual    | FirstName     | 167       | varchar     |
| Individual    | LastName      | 167       | varchar     |
| Occupation    | JobTitle      | 167       | varchar     |
| Event         | EventName     | 167       | varchar     |
| Scoreboard    | Player        | 167       | varchar     |
| Team          | TeamName      | 167       | varchar     |
| Client        | FirstName     | 167       | varchar     |
| Client        | LastName      | 167       | varchar     |
| Colors        | ColorName     | 167       | varchar     |
+---------------+---------------+-----------+-------------+

आप देखेंगे कि मैं TYPE_NAME() . का भी उपयोग कर रहा हूं इस उदाहरण में आईडी के आधार पर नाम वापस करने के लिए।

उदाहरण 3 - उपयोगकर्ता-निर्धारित प्रकार

आप TYPE_ID() . का भी उपयोग कर सकते हैं उपयोगकर्ता-परिभाषित प्रकारों के लिए। यहां एक उदाहरण दिया गया है जिसमें परिणामों में उपयोगकर्ता द्वारा परिभाषित प्रकार का उपनाम शामिल है।

SELECT 
  o.name AS [Object Name], 
  c.name AS [Column Name],  
  c.user_type_id AS [Type ID],
  TYPE_NAME(c.user_type_id) AS [Type Name],
  CASE 
    WHEN t.is_user_defined = 1 THEN 'Yes'
    ELSE 'No' 
  END AS [User Defined?]
FROM sys.objects AS o   
JOIN sys.columns AS c  ON o.object_id = c.object_id
JOIN sys.types t ON c.user_type_id = t.user_type_id
WHERE c.user_type_id = TYPE_ID('varchar')
OR c.user_type_id = TYPE_ID('clientcode');

परिणाम:

+---------------+---------------+-----------+-------------+-----------------+
| Object Name   | Column Name   | Type ID   | Type Name   | User Defined?   |
|---------------+---------------+-----------+-------------+-----------------|
| Individual    | FirstName     | 167       | varchar     | No              |
| Individual    | LastName      | 167       | varchar     | No              |
| Occupation    | JobTitle      | 167       | varchar     | No              |
| Event         | EventName     | 167       | varchar     | No              |
| Scoreboard    | Player        | 167       | varchar     | No              |
| Team          | TeamName      | 167       | varchar     | No              |
| Client        | ClientCode    | 257       | clientcode  | Yes             |
| Client        | FirstName     | 167       | varchar     | No              |
| Client        | LastName      | 167       | varchar     | No              |
| Colors        | ColorName     | 167       | varchar     | No              |
+---------------+---------------+-----------+-------------+-----------------+

यहां क्लाइंटकोड प्रकार एक उपयोगकर्ता-परिभाषित प्रकार का उपनाम है, और यह is_user_defined है ध्वज है 1 . इस मामले में मैं एक CASE . का उपयोग करता हूं वापसी के लिए अभिव्यक्ति Yes (और No लौटाने के लिए अगर इसका 0 . है )।

उदाहरण 4 - अमान्य प्रकार या अपर्याप्त अनुमति

यदि आप एक अमान्य प्रकार का नाम प्रदान करते हैं या आपके पास प्रकार को संदर्भित करने के लिए पर्याप्त अनुमति नहीं है, तो परिणाम NULL होगा।

SELECT TYPE_ID('oops') AS Result;

परिणाम:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

  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 सर्वर (C#) में एक पंक्ति को INSERT या अद्यतन करने के लिए स्ट्रीम का उपयोग कर सकता हूं?

  2. SQL सर्वर (T-SQL) में तालिका के लिए विभाजन जानकारी प्राप्त करने के 2 तरीके

  3. बिटवाइज़-या एक सबक्वेरी में एकत्रित करें

  4. PHP, ORM, MSSQL और यूनिकोड, क्या इन कार्यों को एक साथ करना संभव है?

  5. READ UNCOMMITTED आइसोलेशन स्तर का उपयोग क्यों करें?