sql - एसक्यूएल सभी स्तंभ नाम वर्णानुक्रम में सूचीबद्ध है




sorting alphabetical (4)

मुझे पता है कि

SELECT * FROM Table

तालिका में सभी स्तंभों को सूचीबद्ध करेगा, लेकिन मैं वर्णमाला क्रम में कॉलमों को सूचीबद्ध करने में दिलचस्पी है

कहो, मेरे पास तीन स्तंभ हैं, "नाम", "उम्र" और "सेक्स"

मैं चाहता हूं कि प्रारूप में कॉलम का आयोजन किया जाए

|age| |name| |sex|

क्या एसक्यूएल के साथ ऐसा करना संभव है?


आप केवल उन स्तंभों को निर्दिष्ट कर सकते हैं, जिन्हें आप चुनना चाहते हैं:

SELECT age, name, sex FROM Table

कॉलम उसी क्रम में दिखाए जाएंगे, जैसा कि आपने उन्हें क्वेरी में निर्दिष्ट किया था।


एसक्यूएल -92 मानक निर्दिष्ट करता है कि जब SELECT * का उपयोग करते हुए कॉलम तालिका के भीतर अपने क्रमिक स्थिति के आरोही अनुक्रम में संदर्भित होते हैं। संबंधित अनुभाग 4.8 (कॉलम) और 7.9 (क्वेरी स्पेसिफिकेशन) हैं। मुझे किसी भी विक्रेता के एक्सटेंशन के बारे में पता नहीं है जो कि कॉलम किसी अन्य क्रम में SELECT * , संभवतः क्योंकि SELECT * का उपयोग आमतौर पर निराश हो जाता है।

आप यह सुनिश्चित करने के लिए एसक्यूएल डीडीएल का उपयोग कर सकते हैं कि कॉलम के क्रमिक पदों वांछित वर्णमाला क्रम से मेल खाते हैं। हालांकि, यह केवल तभी काम करेगा जब आप FROM खंड में एक सिन्ज़ल टेबल को संदर्भित करते हैं। यदि दो तालिकाओं का संदर्भ दिया जाता है, तो SELECT * पहले तालिका से स्तंभों को क्रमिक स्थिति में दूसरी तालिका के स्तंभों के बाद क्रमिक स्थिति क्रम में वापस लौटाएगा, इसलिए पूर्ण परिणाम के कॉलम वर्णमाला क्रम में नहीं हो सकते हैं।


  • गतिशील एसक्यूएल के बिना स्वचालित रूप से ऐसा करने का कोई रास्ता नहीं है
  • SELECT * को अनुशंसित नहीं किया गया है और स्तंभ नामों को क्रमबद्ध नहीं करेगा
  • आपको स्पष्ट रूप से SELECT age, name, sex FROM

एसक्यूएल स्तर पर, इससे कोई फर्क नहीं पड़ता क्या यह किसी भी क्लाइंट कोड ऑब्जेक्ट से बात नहीं करता-

यदि यह महत्वपूर्ण है, तो सॉर्ट करें जब आप ग्राहक को डेटा पेश करते हैं।

क्षमा करें, यह सिर्फ यही तरीका है ...


यह सभी कॉलमों के साथ एक क्वेरी उत्पन्न करता है वर्णानुक्रम में चयनित बयान में क्रमबद्ध है

DECLARE @QUERY VARCHAR(2000)
DECLARE @TABLENAME VARCHAR(50) = '<YOU_TABLE>'

SET @QUERY = 'SELECT '
SELECT @QUERY = @QUERY + Column_name + ', 
'
  FROM INFORMATION_SCHEMA.COLUMNS 
 WHERE TABLE_NAME = @TABLENAME
 ORDER BY Column_name

SET @QUERY =  LEFT(@QUERY, LEN(@QUERY) - 4) + ' 
FROM '+ @TABLENAME

PRINT @QUERY
EXEC(@QUERY)





alphabetical