এসকিউএল সার্ভারে আমার বড় স্ট্রিং রয়েছে। আমি সেই স্ট্রিংটি 10 বা 15 অক্ষরে ছাঁটাই করতে চাই
আসল স্ট্রিং
this is test string. this is test string. this is test string. this is test string.
পছন্দসই স্ট্রিং
this is test string. this is ......
এসকিউএল সার্ভারে আমার বড় স্ট্রিং রয়েছে। আমি সেই স্ট্রিংটি 10 বা 15 অক্ষরে ছাঁটাই করতে চাই
আসল স্ট্রিং
this is test string. this is test string. this is test string. this is test string.
পছন্দসই স্ট্রিং
this is test string. this is ......
উত্তর:
আপনি যদি কেবল আপনার দীর্ঘ স্ট্রিংয়ের কয়েকটি অক্ষর ফিরিয়ে দিতে চান তবে আপনি এটি ব্যবহার করতে পারেন:
select
left(col, 15) + '...' col
from yourtable
ডেমো সহ এসকিউএল ফিডল দেখুন ।
এটি স্ট্রিংয়ের প্রথম 15 টি অক্ষর ফিরিয়ে দেবে এবং তারপরে এর শেষেটি যুক্ত করে ...
।
আপনি যদি 15 টিরও কম স্ট্রিং না পেয়ে তা নিশ্চিত করতে চান ...
তবে আপনি এটি ব্যবহার করতে পারেন:
select
case
when len(col)>=15
then left(col, 15) + '...'
else col end col
from yourtable
ডেমো সহ এসকিউএল ফিডল দেখুন
...
এটি প্রয়োগ না হলে আপনি এখনও যুক্ত হন
তুমি ব্যবহার করতে পার
LEFT(column, length)
অথবা
SUBSTRING(column, start index, length)
আমি মনে করি এখানে উত্তরগুলি দুর্দান্ত তবে আমি একটি দৃশ্যাবলী যুক্ত করতে চাই।
এর দৈর্ঘ্যের বিষয়ে চিন্তা না করেই বেশ কয়েকবার আমি স্ট্রিংয়ের সামনে থেকে কিছু পরিমাণ অক্ষর নিতে চাইতাম। রাইট () এবং সাবস্ট্রাস্টিং () দিয়ে এটি করার বিভিন্ন উপায় রয়েছে তবে তাদের সকলের স্ট্রিংয়ের দৈর্ঘ্য জানতে হবে যা কখনও কখনও জিনিসকে ধীর করে দেয়।
পরিবর্তে আমি STUFF () ফাংশনটি ব্যবহার করেছি:
SET @Result = STUFF(@Result, 1, @LengthToRemove, '')
এটি শূন্য স্ট্রিংয়ের সাথে অবিযুক্ত স্ট্রিংয়ের দৈর্ঘ্যকে প্রতিস্থাপন করে।
আপনি কাস্ট () অপারেশনটিও ব্যবহার করতে পারেন:
Declare @name varchar(100);
set @name='....';
Select Cast(@name as varchar(10)) as new_name
আপনি নীচেরটিও ব্যবহার করতে পারেন, আইআইএফ কেস স্টেটমেন্টটি এড়িয়ে চলে এবং যখন প্রয়োজন হয় তখনই উপবৃত্তগুলি যুক্ত করে (কেবল এসকিউএল সার্ভারে ভাল 2012 এবং পরে) এবং কেস স্টেটমেন্টটি আরও এএনএসআই অনুগত (তবে আরও ভার্বোস)
SELECT
col, LEN(col),
col2, LEN(col2),
col3, LEN(col3) FROM (
SELECT
col,
LEFT(x.col, 15) + (IIF(len(x.col) > 15, '...', '')) AS col2,
LEFT(x.col, 15) + (CASE WHEN len(x.col) > 15 THEN '...' ELSE '' END) AS col3
from (
select 'this is a long string. One that is longer than 15 characters' as col
UNION
SELECT 'short string' AS col
UNION
SELECT 'string==15 char' AS col
UNION
SELECT NULL AS col
UNION
SELECT '' AS col
) x
) y