এসকিউএল সার্ভারে একটি VARCHAR কলামের সর্বোচ্চ দৈর্ঘ্য পুনরুদ্ধার করুন


90

আমি VARCHARএকটি এসকিউএল সার্ভার সারণীর নির্দিষ্ট কলামে দীর্ঘতম সন্ধান করতে চাই ।

এখানে একটি উদাহরণ:

ID = INT IDENTITY
DESC = VARCHAR(5000)

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

এসকিউএল 3 ফেরত কি? যেহেতু দীর্ঘতম মানটি 3 টি অক্ষর?

উত্তর:


170

বিবরণ কলামে দৈর্ঘ্য এবং সর্বাধিকের জন্য অন্তর্নির্মিত ফাংশনগুলি ব্যবহার করুন:

SELECT MAX(LEN(DESC)) FROM table_name;

মনে রাখবেন যে যদি আপনার টেবিলটি খুব বড় হয় তবে কার্য সম্পাদনের সমস্যা হতে পারে।


ধন্যবাদ, আমার একটি মস্তিষ্কের উচ্ছ্বাস ছিল এবং লেন ফাংশনটির মাঝের প্রশ্নটি মনে পড়ল তবে ভেবেছিল যেভাবেই হোক এখানে রাখা ভাল। ধন্যবাদ বন্ধু!
মিলো ল্যামার

17
কেবলমাত্র একটি নোট, আপনি যদি অক্ষরের সংখ্যার বিপরীতে আকার জানতে চান তবে ব্যবহার করুন DATALENGTH(যেহেতু আপনি NVARCHARকিছু জায়গায় ব্যবহার করতে পারেন বা কোনও দিন)।
অ্যারন বারট্র্যান্ড


19

সতর্ক থেকো!! স্পেস থাকলে সেগুলি টি-এসকিউএল-তে লেন পদ্ধতি দ্বারা বিবেচনা করা হবে না। এই কৌশলটি আপনাকে এবং ব্যবহার করতে দেবেন না

select max(datalength(Desc)) from table_name

ভাল যুক্তি. আসল ভার্চারগুলি 'এস্যাসেড' এবং 'এস্যাসিড' এসকিউএল সার্ভার দ্বারা একই আচরণ করা হয় (লাইক ক্লজ বাদে)। বিশদ জানতে চেক করুন: সমর্থন.
microsoft.com/en-us/help/316626/…

9

ওরাকল-এর ক্ষেত্রে এটি LEN এর পরিবর্তে LENGTH

SELECT MAX(LENGTH(Desc)) FROM table_name

এছাড়াও, ডিইএসসি একটি সংরক্ষিত শব্দ। যদিও অনেক সংরক্ষিত শব্দ এখনও অনেক পরিস্থিতিতে কলামের নামের জন্য কাজ করবে এটি করা খারাপ অভ্যাস, এবং কিছু পরিস্থিতিতে সমস্যার কারণ হতে পারে। এগুলি কোনও কারণে সংরক্ষিত।

ডেস্ক শব্দটি যদি কেবল উদাহরণ হিসাবে ব্যবহৃত হয়, তবে এটি লক্ষ করা উচিত যে প্রত্যেকে এটি উপলব্ধি করতে পারে না, তবে অনেকেই বুঝতে পারবেন যে এটি নেমে যাওয়ার জন্য একটি সংরক্ষিত শব্দ। ব্যক্তিগতভাবে, আমি এটি ব্যবহার করে শুরু করেছিলাম এবং তারপরে কলামের নামটি কোথায় গেছে তা বের করার চেষ্টা করেছিলাম কারণ আমার সমস্ত ছিল সংরক্ষিত শব্দ। এটি নির্ধারণ করতে খুব বেশি সময় লাগেনি, তবে আপনার আসল কলামের নামটি কী বিকল্পে রাখবেন তা সিদ্ধান্ত নেওয়ার সময় এটি মনে রাখবেন।


7

সারণীতে রেকর্ডের সর্বোচ্চ গণনা দেয়

select max(len(Description))from Table_Name

বৃহত্তর গণনা থাকার রেকর্ড দেয়

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

আশা কাউকে সাহায্য করে।



2

স্কেল সার্ভারের জন্য (এসএসএমএস)

select MAX(LEN(ColumnName)) from table_name

এটি অক্ষরের সংখ্যা প্রদান করবে।

 select MAX(DATALENGTH(ColumnName)) from table_name

এটি ব্যবহৃত / প্রয়োজনীয় বাইট সংখ্যা প্রদান করবে।

যদি কেউ কেউ বারচার ব্যবহার করেন তবে তা ব্যবহার করুন DATALENGTHআরো বিস্তারিত


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

4
যদিও এই কোড স্নিপেট একটি সমাধান সহ সমাধান হতে পারে, সত্যিই আপনার পোস্টের গুণমান উন্নত করতে সহায়তা করে। মনে রাখবেন যে আপনি ভবিষ্যতে পাঠকদের জন্য প্রশ্নের উত্তর দিচ্ছেন, এবং সেই লোকেরা আপনার কোড পরামর্শের কারণগুলি জানেন না।
এইচএমডি

দেখানোর জন্য +1 আমি একটি এসকিউএল সার্ভার কীওয়ার্ড ডিইএসসি একটি কলামের নাম হিসাবে ব্যবহার করেছি, এটি এটি কোনও কারণে এলওএল করতে দেয়
মিলো লামার

সঠিক বানানটিও সমালোচিত হতে পারে কারণ কিছু উত্তর এটির 'দৈর্ঘ্য' বুঝতে না পারলে এটি আসলে 'দৈর্ঘ্যের' জন্য টাইপ (এটি যদি ত্রুটির কারণ হয় তবে তা নয়)
জিন-ক্লড ডিমারস

1

আপনি যে কলামটির দীর্ঘতম দৈর্ঘ্যযুক্ত তা সুনির্দিষ্টভাবে সনাক্ত করতে চান, বিশেষত আপনি যদি কোনও টেবিলে একটি সারিতে একটি কলামের দৈর্ঘ্য অন্য যে কোনও সারির তুলনায় এত দীর্ঘ কেন তা জানতে সমস্যা সমাধান করছেন। এই ক্যোয়ারীটি আপনাকে কোন সারিটি চিহ্নিত করার জন্য সারিতে একটি সনাক্তকারী তালিকাবদ্ধ করার বিকল্প দেবে।

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.