কীভাবে এসকিউএল সার্ভার ব্যবহার করে স্ট্রিংটি কেটে যাবে


105

এসকিউএল সার্ভারে আমার বড় স্ট্রিং রয়েছে। আমি সেই স্ট্রিংটি 10 ​​বা 15 অক্ষরে ছাঁটাই করতে চাই

আসল স্ট্রিং

this is test string. this is test string. this is test string. this is test string.

পছন্দসই স্ট্রিং

this is test string. this is ......

1
আপনার "পছন্দসই স্ট্রিং" এ "মূল স্ট্রিং" থেকে 28 টি অক্ষর রয়েছে, আপনি যে "10 বা 15" জিজ্ঞাসা করছেন তার কাছাকাছি নয়
কেএম।

উত্তর:


158

আপনি যদি কেবল আপনার দীর্ঘ স্ট্রিংয়ের কয়েকটি অক্ষর ফিরিয়ে দিতে চান তবে আপনি এটি ব্যবহার করতে পারেন:

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

ডেমো সহ এসকিউএল ফিডল দেখুন


2
যদি মূল স্ট্রিং 15 অক্ষর কম হয় তবে ...এটি প্রয়োগ না হলে আপনি এখনও যুক্ত হন
কেএম।

@KM। স্ট্রিং দৈর্ঘ্যের জন্য যাচাই করবে এমন একটি সংস্করণ যুক্ত করেছে
তারিন

2
যদি কলটি দৈর্ঘ্যে হুবহু 15 হয় তবে এটি বাম (কর্নেল, 15) করার পরে পুরো স্ট্রিংটি পাবে এবং তারপরে শেষে '...' চাপবে। অবশ্যই আরও ভাল সমাধান 'যখন লেন (কর্নেল)> 15' পরীক্ষা করা হচ্ছে।
মারফিব্রো 2

35

তুমি ব্যবহার করতে পার

LEFT(column, length)

অথবা

SUBSTRING(column, start index, length)

83
Tsql তে কোনও স্ট্রিং কীভাবে কেটে যায় তার উত্তর খুঁজে পাওয়ার সহজ উপায় এই এখন প্রশ্ন। যদি এই ব্যক্তি এটি না জিজ্ঞাসা করে থাকে, তবে আমি এখনই কিছু এমএসডিএন নিবন্ধের মধ্যে দিয়ে
ট্রল

4
@ স্নাপ্লেমাউটন সাধারণ জিনিসগুলি সম্পর্কে প্রশ্ন জিজ্ঞাসা করা "খারাপ" হতে পারে (উত্তরটিতে যেমন আগে পাওয়া সহজ ছিল) তবে ফলাফলটি যাইহোক ভালই হতে পারে। আমার অর্থ এসও বোঝানো হয়েছে সব ধরণের প্রশ্নের উত্তর রাখা (এমনকি যেগুলি অন্যথায় স্টাফগুলি খুঁজে পাওয়া সহজ।
jahu

8
@snaplemouton; অনুমান করুন, যখন এই প্রশ্ন / উত্তরটি অনুসন্ধানের ফলাফলের শীর্ষে ছিল যা আমার প্রচুর সময় সাশ্রয় করে।
এএমিসিকো

9
প্লাস, দুটিই MSDN না ফ্রেজ শব্দ ব্যবহার হয় ফাংশন বর্ণনা করে truncate
pablete

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

4

আমি মনে করি এখানে উত্তরগুলি দুর্দান্ত তবে আমি একটি দৃশ্যাবলী যুক্ত করতে চাই।

এর দৈর্ঘ্যের বিষয়ে চিন্তা না করেই বেশ কয়েকবার আমি স্ট্রিংয়ের সামনে থেকে কিছু পরিমাণ অক্ষর নিতে চাইতাম। রাইট () এবং সাবস্ট্রাস্টিং () দিয়ে এটি করার বিভিন্ন উপায় রয়েছে তবে তাদের সকলের স্ট্রিংয়ের দৈর্ঘ্য জানতে হবে যা কখনও কখনও জিনিসকে ধীর করে দেয়।

পরিবর্তে আমি STUFF () ফাংশনটি ব্যবহার করেছি:

SET @Result = STUFF(@Result, 1, @LengthToRemove, '')

এটি শূন্য স্ট্রিংয়ের সাথে অবিযুক্ত স্ট্রিংয়ের দৈর্ঘ্যকে প্রতিস্থাপন করে।


4

আপনি কাস্ট () অপারেশনটিও ব্যবহার করতে পারেন:

 Declare @name varchar(100);
set @name='....';
Select Cast(@name as varchar(10)) as new_name

একটি পাঠ্য ফাইলে আউটপুট দেওয়ার সময় আমি এটিকে সবচেয়ে পছন্দ করি কারণ আউটপুট পাঠ্য ফাইলে সেই কলামটিতে কেবলমাত্র নতুন সংখ্যক অক্ষর বরাদ্দ করা হয়। আরও কমপ্যাক্ট ফলাফলের জন্য (যেমন 1000 এর পরিবর্তে 50)।
বিল্ডারশি

1

আপনি নীচেরটিও ব্যবহার করতে পারেন, আইআইএফ কেস স্টেটমেন্টটি এড়িয়ে চলে এবং যখন প্রয়োজন হয় তখনই উপবৃত্তগুলি যুক্ত করে (কেবল এসকিউএল সার্ভারে ভাল 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

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