यदि आपको कभी भी SQL सर्वर में डेटा प्रकारों की सूची प्राप्त करने की आवश्यकता होती है, तो आप ऐसा करने के लिए सिस्टम दृश्यों में से किसी एक का उपयोग कर सकते हैं।
विशेष रूप से, आप sys.types
. का उपयोग कर सकते हैं सिस्टम कैटलॉग दृश्य। यह दृश्य डेटाबेस में परिभाषित सभी सिस्टम-आपूर्ति और उपयोगकर्ता-परिभाषित डेटा प्रकार देता है। यदि आप SQL Server 2000 का उपयोग कर रहे हैं sys.systypes
चाल चलनी चाहिए।
उदाहरण 1 - sys.types
देखें
sys.types
यदि आप SQL Server 2000 के बाद के SQL सर्वर के संस्करण का उपयोग कर रहे हैं तो view सबसे अच्छा है।
sys.types
. का उपयोग करने का सबसे तेज़/आसान तरीका दृश्य सब कुछ चुनना है। उस स्थिति में आपका कोड इस तरह दिख सकता है:
SELECT * FROM sys.types;
हालांकि, यह बहुत सारे कॉलम लौटाता है जिनमें आपकी रुचि हो सकती है या नहीं भी हो सकती है। आप इसे केवल उन कॉलम तक सीमित कर सकते हैं जिनमें आपकी रुचि है।
यहां रुचि के कुछ कॉलम चुनने का एक उदाहरण दिया गया है:
SELECT name, max_length, [precision], scale, is_user_defined FROM sys.types;
परिणाम:
+------------------+--------------+-------------+---------+-------------------+ | name | max_length | precision | scale | is_user_defined | |------------------+--------------+-------------+---------+-------------------| | image | 16 | 0 | 0 | 0 | | text | 16 | 0 | 0 | 0 | | uniqueidentifier | 16 | 0 | 0 | 0 | | date | 3 | 10 | 0 | 0 | | time | 5 | 16 | 7 | 0 | | datetime2 | 8 | 27 | 7 | 0 | | datetimeoffset | 10 | 34 | 7 | 0 | | tinyint | 1 | 3 | 0 | 0 | | smallint | 2 | 5 | 0 | 0 | | int | 4 | 10 | 0 | 0 | | smalldatetime | 4 | 16 | 0 | 0 | | real | 4 | 24 | 0 | 0 | | money | 8 | 19 | 4 | 0 | | datetime | 8 | 23 | 3 | 0 | | float | 8 | 53 | 0 | 0 | | sql_variant | 8016 | 0 | 0 | 0 | | ntext | 16 | 0 | 0 | 0 | | bit | 1 | 1 | 0 | 0 | | decimal | 17 | 38 | 38 | 0 | | numeric | 17 | 38 | 38 | 0 | | smallmoney | 4 | 10 | 4 | 0 | | bigint | 8 | 19 | 0 | 0 | | hierarchyid | 892 | 0 | 0 | 0 | | geometry | -1 | 0 | 0 | 0 | | geography | -1 | 0 | 0 | 0 | | varbinary | 8000 | 0 | 0 | 0 | | varchar | 8000 | 0 | 0 | 0 | | binary | 8000 | 0 | 0 | 0 | | char | 8000 | 0 | 0 | 0 | | timestamp | 8 | 0 | 0 | 0 | | nvarchar | 8000 | 0 | 0 | 0 | | nchar | 8000 | 0 | 0 | 0 | | xml | -1 | 0 | 0 | 0 | | sysname | 256 | 0 | 0 | 0 | +------------------+--------------+-------------+---------+-------------------+
ये वर्तमान डेटाबेस के भीतर डेटा प्रकार हैं। यदि आप किसी भिन्न डेटाबेस पर स्विच करते हैं, तो आपको अलग-अलग परिणाम मिल सकते हैं (यह काफी हद तक इस बात पर निर्भर करेगा कि कोई उपयोगकर्ता-परिभाषित डेटा प्रकार या उपनाम डेटा प्रकार परिभाषित किए गए हैं, और वे डेटाबेस के बीच भिन्न हैं या नहीं)।
उदाहरण 2 - उपनाम और उपयोगकर्ता-निर्धारित डेटा प्रकार
पिछले उदाहरण में, मैंने is_user_defined
. शामिल किया था कॉलम। हम देख सकते हैं कि कोई भी डेटा प्रकार उपयोगकर्ता-परिभाषित या उपनाम डेटा प्रकार नहीं है, क्योंकि उन सभी में 0
है उनके मूल्य के रूप में।
आइए एक उपनाम डेटा प्रकार बनाएं, और फिर देखें कि यह परिणामों में कैसा दिखाई देता है।
उपनाम डेटा प्रकार बनाएं:
CREATE TYPE SSN FROM varchar(11) NOT NULL;
अब क्वेरी को फिर से चलाते हैं।
SELECT name, max_length, [precision], scale, is_user_defined FROM sys.types;
परिणाम:
+------------------+--------------+-------------+---------+-------------------+ | name | max_length | precision | scale | is_user_defined | |------------------+--------------+-------------+---------+-------------------| | image | 16 | 0 | 0 | 0 | | text | 16 | 0 | 0 | 0 | | uniqueidentifier | 16 | 0 | 0 | 0 | | date | 3 | 10 | 0 | 0 | | time | 5 | 16 | 7 | 0 | | datetime2 | 8 | 27 | 7 | 0 | | datetimeoffset | 10 | 34 | 7 | 0 | | tinyint | 1 | 3 | 0 | 0 | | smallint | 2 | 5 | 0 | 0 | | int | 4 | 10 | 0 | 0 | | smalldatetime | 4 | 16 | 0 | 0 | | real | 4 | 24 | 0 | 0 | | money | 8 | 19 | 4 | 0 | | datetime | 8 | 23 | 3 | 0 | | float | 8 | 53 | 0 | 0 | | sql_variant | 8016 | 0 | 0 | 0 | | ntext | 16 | 0 | 0 | 0 | | bit | 1 | 1 | 0 | 0 | | decimal | 17 | 38 | 38 | 0 | | numeric | 17 | 38 | 38 | 0 | | smallmoney | 4 | 10 | 4 | 0 | | bigint | 8 | 19 | 0 | 0 | | hierarchyid | 892 | 0 | 0 | 0 | | geometry | -1 | 0 | 0 | 0 | | geography | -1 | 0 | 0 | 0 | | varbinary | 8000 | 0 | 0 | 0 | | varchar | 8000 | 0 | 0 | 0 | | binary | 8000 | 0 | 0 | 0 | | char | 8000 | 0 | 0 | 0 | | timestamp | 8 | 0 | 0 | 0 | | nvarchar | 8000 | 0 | 0 | 0 | | nchar | 8000 | 0 | 0 | 0 | | xml | -1 | 0 | 0 | 0 | | sysname | 256 | 0 | 0 | 0 | | SSN | 11 | 0 | 0 | 1 | +------------------+--------------+-------------+---------+-------------------+
नया डेटा प्रकार प्रकट होता है (सबसे नीचे)। इसका एक मान 1
. भी होता है is_user_defined
. में कॉलम।
द sys.systypes
देखें
एक sys.systypes
भी है सिस्टम संगतता दृश्य, जो केवल पश्चगामी संगतता के लिए प्रदान किया जाता है। ऐसा इसलिए है क्योंकि systypes
SQL Server 2000 में एक सिस्टम टेबल का नाम था, और उस तालिका को संदर्भित करने वाले कोड के साथ बहुत सारी विरासत प्रणालियाँ हो सकती हैं।
माइक्रोसॉफ्ट ने संकेत दिया है कि sys.systypes
सिस्टम संगतता दृश्य Microsoft SQL सर्वर के भविष्य के संस्करण में हटा दिया जाएगा, और इसलिए अनुशंसा करता है कि आप नए कार्य में इस दृश्य का उपयोग करने से बचें।
दूसरे शब्दों में, sys.types
. का उपयोग करें इसके बजाय यदि आप।
लेकिन अगर आप अभी भी SQL सर्वर के पुराने संस्करण का उपयोग कर रहे हैं, तो आपको sys.systypes
का उपयोग करना होगा ।
ध्यान दें कि sys.systypes
sys.types
. के लिए अलग-अलग कॉलम/कॉलम नाम शामिल हैं , इसलिए पिछले उदाहरण में मेरे द्वारा उपयोग किए गए कॉलम नाम काम नहीं करेंगे।
आप अभी भी तारक का उपयोग करके सभी स्तंभों का चयन कर सकते हैं (*
) हालांकि वाइल्डकार्ड कैरेक्टर:
SELECT * FROM sys.systypes;