SQL सर्वर में VARCHAR कॉलम की अधिकतम लंबाई प्राप्त करें


87

मैं VARCHARSQL सर्वर तालिका के एक विशिष्ट कॉलम में सबसे लंबे समय तक खोजना चाहता हूं ।

यहाँ एक उदाहरण है:

ID = INT IDENTITY
DESC = VARCHAR(5000)

ID | Desc
---|-----
1  | a
2  | aaa
3  | aa

3 लौटने के लिए एसक्यूएल क्या है? चूंकि सबसे लंबा मान 3 वर्णों का है?

जवाबों:


166

विवरण स्तंभ पर लंबाई और अधिकतम के लिए अंतर्निहित कार्यों का उपयोग करें:

SELECT MAX(LEN(DESC)) FROM table_name;

ध्यान दें कि यदि आपकी तालिका बहुत बड़ी है, तो प्रदर्शन समस्याएं हो सकती हैं।


धन्यवाद, मेरे पास एक मस्तिष्क गोज़ था और LEN फ़ंक्शन मध्य प्रश्न को याद किया था, लेकिन सोचा कि यहाँ वैसे भी रहना अच्छा हो सकता है। धन्यवाद दोस्त!
मिलो लामार

17
केवल एक नोट, यदि आप वर्णों की संख्या के विपरीत आकार जानना चाहते हैं, तो उपयोग करें DATALENGTH(क्योंकि आप NVARCHARकुछ स्थानों में उपयोग कर सकते हैं, या किसी दिन)।
आरोन बर्ट्रेंड


19

ध्यान रहे!! यदि वहाँ रिक्त स्थान है, तो उन्हें T-SQL में LEN विधि द्वारा नहीं माना जाएगा। इस चाल को आप और उपयोग न करें

select max(datalength(Desc)) from table_name

अच्छी बात। वास्तविक चर 'एसड' और 'एसड' को SQL सर्वर (LIKE क्लॉज को छोड़कर) द्वारा समान माना जाता है। विवरण की जांच के लिए: support.microsoft.com/en-us/help/316626/…
snn

9

Oracle के लिए, यह LEN के बजाय LENGTH भी है

SELECT MAX(LENGTH(Desc)) FROM table_name

इसके अलावा, DESC एक आरक्षित शब्द है। हालाँकि कई आरक्षित शब्द अभी भी स्तंभ नाम के लिए काम करेंगे कई परिस्थितियों में ऐसा करना बुरा है, और कुछ परिस्थितियों में मुद्दों का कारण बन सकता है। वे एक कारण के लिए आरक्षित हैं।

यदि Desc शब्द का उपयोग केवल एक उदाहरण के रूप में किया जा रहा था, तो यह ध्यान दिया जाना चाहिए कि हर किसी को इसका एहसास नहीं होगा, लेकिन कई लोगों को पता चलेगा कि यह Descending के लिए एक आरक्षित शब्द है। व्यक्तिगत रूप से, मैंने इसका उपयोग करके शुरुआत की, और फिर यह पता लगाने की कोशिश कर रहा था कि कॉलम का नाम कहां गया क्योंकि सभी मेरे पास आरक्षित शब्द थे। यह पता लगाने में लंबा समय नहीं लगा, लेकिन अपने वास्तविक कॉलम नाम के विकल्प के बारे में निर्णय लेते समय ध्यान रखें।


6

तालिका में रिकॉर्ड की अधिकतम गणना देता है

select max(len(Description))from Table_Name

ग्रेटर काउंट होने का रिकॉर्ड देता है

select Description from Table_Name group by Description having max(len(Description)) >27

आशा किसी की मदद करती है।



2

SQL सर्वर (SSMS) के लिए

select MAX(LEN(ColumnName)) from table_name

यह वर्णों की संख्या लौटाएगा।

 select MAX(DATALENGTH(ColumnName)) from table_name

यह प्रयुक्त / आवश्यक बाइट्स की संख्या लौटाएगा।

यदि कोई एक उपयोग करता है तो varchar का उपयोग करें DATALENGTHअधिक जानकारी


1
SELECT TOP 1 column_name, LEN(column_name) AS Lenght FROM table_name ORDER BY LEN(column_name) DESC

2
हालांकि यह कोड स्निपेट समाधान हो सकता है, स्पष्टीकरण सहित वास्तव में आपके पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और वे लोग आपके कोड सुझाव के कारणों को नहीं जान सकते हैं।
एचएमडी

+1 इंगित करने के लिए मैंने एक कॉलम नाम के रूप में SQL सर्वर कीवर्ड DESC का उपयोग किया, जो इसे किसी कारण से LOL
Milo LaMar

सही वर्तनी भी महत्वपूर्ण हो सकती है क्योंकि कुछ पढ़ने से यह महसूस नहीं हो सकता है कि उत्तर में 'लैंथ' वास्तव में 'लंबाई' के लिए एक टाइपो है (ऐसा नहीं है कि यदि कोई त्रुटि हो सकती है)
जीन-क्लाउड देवर्स

1

कई बार आप उस पंक्ति की पहचान करना चाहते हैं जिसमें सबसे लंबी लंबाई वाला वह कॉलम होता है, खासकर यदि आप यह पता लगाने के लिए समस्याग्रस्त हैं कि किसी तालिका में पंक्ति पर स्तंभ की लंबाई किसी अन्य पंक्ति की तुलना में इतनी लंबी क्यों है, उदाहरण के लिए। यह क्वेरी आपको पंक्ति में एक पहचानकर्ता को सूचीबद्ध करने का विकल्प देगी ताकि यह पता लगाया जा सके कि वह कौन सी पंक्ति है।

select ID, [description], len([description]) as descriptionlength
FROM [database1].[dbo].[table1]
where len([description]) = 
 (select max(len([description]))
  FROM [database1].[dbo].[table1]

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.