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()
का उपयोग कर सकते हैं अपने नाम के आधार पर डेटा प्रकार की आईडी वापस करने के लिए।