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 | +----------+