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

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

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

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

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

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

SELECT TYPE_NAME(34) AS Result;

परिणाम:

+----------+
| Result   |
|----------|
| image    |
+----------+

यह परिणाम हमें बताता है कि 34 की टाइप आईडी का उपयोग छवि . के लिए किया जाता है टाइप करें।

उदाहरण 2 - एक अधिक उपयोगी उदाहरण

यहां एक और उपयोगी उदाहरण दिया गया है।

USE Music;
SELECT 
  o.name AS [Object Name], 
  c.name AS [Column Name],  
  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
WHERE o.type_desc = 'USER_TABLE';

परिणाम:

+---------------+---------------+-------------+
| Object Name   | Column Name   | Type Name   |
|---------------+---------------+-------------|
| Artists       | ArtistId      | int         |
| Artists       | ArtistName    | nvarchar    |
| Artists       | ActiveFrom    | date        |
| Artists       | CountryId     | int         |
| Genres        | GenreId       | int         |
| Genres        | Genre         | nvarchar    |
| Albums        | AlbumId       | int         |
| Albums        | AlbumName     | nvarchar    |
| Albums        | ReleaseDate   | date        |
| Albums        | ArtistId      | int         |
| Albums        | GenreId       | int         |
| Country       | CountryId     | int         |
| Country       | CountryName   | nvarchar    |
+---------------+---------------+-------------+

यह क्वेरी उपयोगकर्ता तालिकाओं को उनके कॉलम और प्रत्येक कॉलम के डेटा प्रकार के साथ लौटाती है।

अगर मैं TYPE_NAME() remove को हटा दूं तो यह कैसा दिखता है :

USE Music;
SELECT 
  o.name AS [Object Name], 
  c.name AS [Column Name],  
  c.user_type_id 
FROM sys.objects AS o   
JOIN sys.columns AS c  ON o.object_id = c.object_id
WHERE o.type_desc = 'USER_TABLE';

परिणाम:

+---------------+---------------+----------------+
| Object Name   | Column Name   | user_type_id   |
|---------------+---------------+----------------|
| Artists       | ArtistId      | 56             |
| Artists       | ArtistName    | 231            |
| Artists       | ActiveFrom    | 40             |
| Artists       | CountryId     | 56             |
| Genres        | GenreId       | 56             |
| Genres        | Genre         | 231            |
| Albums        | AlbumId       | 56             |
| Albums        | AlbumName     | 231            |
| Albums        | ReleaseDate   | 40             |
| Albums        | ArtistId      | 56             |
| Albums        | GenreId       | 56             |
| Country       | CountryId     | 56             |
| Country       | CountryName   | 231            |
+---------------+---------------+----------------+

टाइप आईडी को पढ़ना इतना आसान नहीं है।

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

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

USE Test;
SELECT 
  o.name AS [Object Name], 
  c.name AS [Column Name],  
  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 o.type_desc = 'USER_TABLE'
AND o.name = 'Client';

परिणाम:

+---------------+---------------+-------------+-----------------+
| Object Name   | Column Name   | Type Name   | User Defined?   |
|---------------+---------------+-------------+-----------------|
| Client        | ClientCode    | clientcode  | Yes             |
| Client        | FirstName     | varchar     | No              |
| Client        | LastName      | varchar     | No              |
+---------------+---------------+-------------+-----------------+

उदाहरण 4 - WHERE क्लॉज में TYPE_NAME() का उपयोग करना

आप TYPE_NAME() use का उपयोग कर सकते हैं (और कोई अन्य सिस्टम फ़ंक्शन) WHERE . में खंड (और कहीं भी एक अभिव्यक्ति की अनुमति है)।

यहां, मैं पिछले उदाहरण को संशोधित करता हूं ताकि मैं TYPE_NAME() . का उपयोग कर सकूं WHERE . में खंड।

USE Test;
SELECT 
  o.name AS [Object Name], 
  c.name AS [Column Name],  
  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 TYPE_NAME(c.user_type_id) = 'clientcode';

परिणाम:

+---------------+---------------+-------------+-----------------+
| Object Name   | Column Name   | Type Name   | User Defined?   |
|---------------+---------------+-------------+-----------------|
| Client        | ClientCode    | clientcode  | Yes             |
+---------------+---------------+-------------+-----------------+

उदाहरण 5 - अमान्य प्रकार आईडी या अपर्याप्त अनुमति

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

SELECT TYPE_NAME(258) AS Result;

परिणाम:

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

टाइप आईडी प्राप्त करें

यदि आप पहले से ही डेटा प्रकार का नाम जानते हैं, लेकिन आप उसकी आईडी चाहते हैं, तो आप TYPE_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 सर्वर इंस्टेंस से सभी डेटाबेस में प्राथमिक कुंजी बाधा के साथ या बिना तालिकाओं की सूची प्राप्त करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 61

  2. अनपेक्षित चर प्रकार प्राप्त-नौकरी द्वारा लौटाया गया

  3. क्लाइंट पर sql सर्वर डेटाबेस के साथ एप्लिकेशन को कैसे परिनियोजित करें

  4. 2015 में SQL सर्वर डेटा प्लेटफ़ॉर्म अपग्रेड

  5. SQL सर्वर में निर्देशांक (देशांतर/अक्षांश, Google मानचित्र से) संग्रहीत करने का सबसे अच्छा तरीका क्या है?