MySQL SUBSTRING() ব্যাখ্যা: উদাহরণসহ স্ট্রিংয়ের অংশগুলি বের করুন

目次

১. SUBSTRING ফাংশন কী?

SUBSTRING ফাংশনটি একটি গুরুত্বপূর্ণ MySQL ফাংশন যা একটি স্ট্রিং থেকে একটি সাবস্ট্রিং নিষ্কাশন করতে ব্যবহৃত হয়। এই ফাংশনের মাধ্যমে, আপনি ডেটাবেসে সংরক্ষিত ডেটা থেকে শুধুমাত্র প্রয়োজনীয় অংশটি বের করতে পারেন। উদাহরণস্বরূপ, এটি ব্যবহারীদের ইমেল ঠিকানা থেকে ডোমেইন অংশ নিষ্কাশন করতে বা একটি পণ্য কোড থেকে নির্দিষ্ট অংশ পুনরুদ্ধার করতে উপযোগী।

১.১ মৌলিক সিনট্যাক্স

SUBSTRING ফাংশনের মৌলিক সিনট্যাক্স নিম্নরূপ:

SUBSTRING(str, pos)
SUBSTRING(str, pos, len)
  • str : নিষ্কাশন করার জন্য স্ট্রিং।
  • pos : শুরুর অবস্থান (১ থেকে শুরু)।
  • len : নিষ্কাশন করার অক্ষরের সংখ্যা (ঐচ্ছিক)।

যদি pos একটি ধনাত্মক মান হয়, তাহলে MySQL স্ট্রিংয়ের শুরু থেকে সামনে গণনা করে। যদি এটি ঋণাত্মক হয়, তাহলে MySQL স্ট্রিংয়ের শেষ থেকে পিছনে গণনা করে। যদি len বাদ দেওয়া হয়, তাহলে MySQL নির্দিষ্ট অবস্থান থেকে স্ট্রিংয়ের শেষ পর্যন্ত নিষ্কাশন করে।

১.২ SUBSTRING ফাংশনের ব্যবহারের ক্ষেত্র

এই ফাংশনটি স্ট্রিং ডেটা ফরম্যাট করতে এবং নির্দিষ্ট অংশ নিষ্কাশন করতে ব্যবহৃত হয়, যা ডেটাবেসে তথ্য অনুসন্ধান এবং প্রক্রিয়াকরণকে আরও দক্ষ করে তোলে।

২. SUBSTRING ফাংশনের মৌলিক ব্যবহার

মৌলিক বিষয়গুলি বোঝার জন্য, কিছু সাধারণ উদাহরণ দেখি।

২.১ একটি স্ট্রিংয়ের অংশ নিষ্কাশন

নিম্নলিখিত কোয়েরিটি “Hello, World!” স্ট্রিংয়ের ৩য় অক্ষর থেকে শুরু করে ৬টি অক্ষর নিষ্কাশন করে।

SELECT SUBSTRING('Hello, World!', 3, 6);

ফলাফল হলো "llo, W"। যেহেতু pos ৩, তাই নিষ্কাশন ৩য় অক্ষর থেকে শুরু হয়, এবং যেহেতু len ৬, তাই ৬টি অক্ষর নিষ্কাশিত হয়।

২.২ দৈর্ঘ্য প্যারামিটার বাদ দেওয়া

যদি আপনি len বাদ দেন, তাহলে MySQL নির্দিষ্ট অবস্থান থেকে স্ট্রিংয়ের শেষ পর্যন্ত নিষ্কাশন করে।

SELECT SUBSTRING('Hello, World!', 8);

ফলাফল হলো "World!", যা ৮ম অক্ষর থেকে শেষ পর্যন্ত সবকিছু পুনরুদ্ধার করে।

২.৩ ঋণাত্মক অবস্থান ব্যবহার

যদি আপনি ঋণাত্মক মান ব্যবহার করেন, তাহলে আপনি স্ট্রিংয়ের শেষ থেকে অবস্থান নির্দিষ্ট করতে পারেন।

SELECT SUBSTRING('Hello, World!', -5);

এই কোয়েরিটি "orld!" ফেরত দেয়, যা শেষ ৫টি অক্ষর নিষ্কাশন করে।

৩. SUBSTRING ফাংশনের ব্যবহারিক প্রয়োগ

SUBSTRING ফাংশনটি বাস্তব জগতের ডেটা অপারেশনে ঘন ঘন ব্যবহৃত হয়। এখানে কিছু ব্যবহারিক উদাহরণ দেওয়া হলো।

৩.১ ইমেল ঠিকানা থেকে ডোমেইন নিষ্কাশন

SUBSTRING কে LOCATE এর সাথে যুক্ত করে, আপনি একটি ইমেল ঠিকানা থেকে ডোমেইন অংশ নিষ্কাশন করতে পারেন।

SELECT email, SUBSTRING(email, LOCATE('@', email) + 1) AS domain FROM users;

এই কোয়েরিটি “@” এর পরের স্ট্রিং নিষ্কাশন করে এবং শুধুমাত্র ডোমেইন অংশ ফেরত দেয়।

৩.২ পণ্য কোডের অংশ নিষ্কাশন

এই উদাহরণে একটি পণ্য কোডের নির্দিষ্ট অংশ নিষ্কাশন করা হয়েছে।

SELECT product_code, SUBSTRING(product_code, 5, 4) AS product_id FROM products;

এই কোয়েরিতে, পণ্য কোডের ৫ম অক্ষর থেকে শুরু করে ৪টি অক্ষর নিষ্কাশিত হয় এবং product_id নামক একটি নতুন কলাম হিসেবে প্রদর্শিত হয়।

৩.৩ সাবকোয়েরিতে ব্যবহার

এটিকে একটি সাবকোয়েরির সাথে যুক্ত করে, আপনি আরও জটিল শর্তাবলীর অধীনে ডেটা নিষ্কাশন করতে পারেন।

SELECT id, SUBSTRING(description, 1, 10) AS short_desc FROM (SELECT * FROM products WHERE category = 'Electronics') AS sub;

এই কোয়েরিটি category ‘Electronics’ যেখানে পণ্যগুলির থেকে description এর প্রথম ১০টি অক্ষর নিষ্কাশন করে।

৪. অন্যান্য স্ট্রিং ফাংশনের সাথে তুলনা

SUBSTRING এর মতো অনুরূপ উদ্দেশ্যে ব্যবহারযোগ্য অন্যান্য ফাংশনের মধ্যে LEFT, RIGHT, এবং SUBSTR অন্তর্ভুক্ত।

৪.১ LEFT এবং RIGHT ফাংশন

  • LEFT(str, len) : স্ট্রিংয়ের শুরু থেকে নির্দিষ্ট সংখ্যক অক্ষর পুনরুদ্ধার করে।
  • RIGHT(str, len) : স্ট্রিংয়ের শেষ থেকে নির্দিষ্ট সংখ্যক অক্ষর পুনরুদ্ধার করে।
    SELECT LEFT('Hello, World!', 5);  -- "Hello"
    SELECT RIGHT('Hello, World!', 6); -- "World!"
    

এই ফাংশনগুলি স্ট্রিংয়ের শুরু বা শেষ থেকে একটি সাবস্ট্রিং নিষ্কাশন করতে চাইলে সুবিধাজনক।

৪.২ SUBSTR ফাংশন

.SUBSTR হল SUBSTRING এর একটি উপনাম, তাই এটি একইভাবে ব্যবহার করা যায়।

SELECT SUBSTR('Hello, World!', 8); -- "World!"

এই কুয়েরি "World!" রিটার্ন করে, ঠিক SUBSTRING এর মতোই।

5. SUBSTRING ফাংশনের উন্নত ব্যবহার এবং অপ্টিমাইজেশন

এই বিভাগে আরও উন্নত ব্যবহার এবং অপ্টিমাইজেশন কৌশলগুলি ব্যাখ্যা করা হয়েছে।

5.1 পারফরম্যান্স অপ্টিমাইজেশন

বৃহৎ ডেটাসেটের উপর SUBSTRING ব্যবহার করলে পারফরম্যান্সে প্রভাব পড়তে পারে। প্রয়োজনে ইনডেক্স তৈরি করুন এবং কুয়েরি এক্সিকিউশন প্ল্যান পরীক্ষা করুন। এছাড়াও, যদি আপনি একই সাবস্ট্রিং বারবার বের করেন, তবে ফলাফল ক্যাশ করার কথা বিবেচনা করুন।

5.2 WHERE ক্লজে ব্যবহার করা

WHERE ক্লজে SUBSTRING ব্যবহার করে সাবস্ট্রিং শর্তের ভিত্তিতে রেকর্ড ফিল্টার করা যায়।

SELECT * FROM products WHERE SUBSTRING(product_code, 1, 3) = 'ABC';

এই কুয়েরি এমন পণ্যগুলো অনুসন্ধান করে যেখানে product_code এর প্রথম ৩টি অক্ষর ‘ABC’।

6. SUBSTRING ফাংশনের উদাহরণ এবং সেরা চর্চা

এখানে SUBSTRING ব্যবহার করার বাস্তব উদাহরণ এবং বাস্তব কাজের জন্য সেরা চর্চা দেওয়া হয়েছে।

6.1 নমুনা কোড

নিম্নলিখিত উদাহরণে গ্রাহকের পূর্ণ নামকে প্রথম নাম এবং শেষ নামে ভাগ করা হয়েছে।

SELECT name, SUBSTRING(name, 1, LOCATE(' ', name) - 1) AS first_name,
       SUBSTRING(name, LOCATE(' ', name) + 1) AS last_name
FROM customers;

এই কুয়েরিতে, স্পেস দ্বারা পৃথক করা পূর্ণ নাম থেকে প্রথম এবং শেষ নাম বের করা হয়।

6.2 সেরা চর্চা

  • আপনার প্রয়োজনীয় অংশই বের করুন : পারফরম্যান্সের প্রভাব কমাতে সাবস্ট্রিং দৈর্ঘ্য যতটা সম্ভব ছোট রাখুন।
  • ডেটা টাইপের প্রতি মনোযোগ দিন : যদি আপনি সংখ্যাসূচক ডেটার উপর SUBSTRING প্রয়োগ করেন, তবে তা স্পষ্টভাবে স্ট্রিংয়ে কাস্ট করতে হতে পারে।
  • ইনডেক্স ব্যবহারের কথা বিবেচনা করুন : WHERE ক্লজে SUBSTRING ব্যবহার করলে ইনডেক্স কার্যকরভাবে ব্যবহার নাও হতে পারে, তাই কুয়েরি পারফরম্যান্স সতর্কতার সাথে পর্যবেক্ষণ করুন।

7. ত্রুটি হ্যান্ডলিং এবং সংস্করণ পার্থক্য

এই বিভাগে SUBSTRING ব্যবহার করার সময় ত্রুটি হ্যান্ডলিং এবং MySQL সংস্করণের পার্থক্যগুলি আলোচনা করা হয়েছে।

7.1 ত্রুটি হ্যান্ডলিং

যদি নির্দিষ্ট অবস্থান স্ট্রিংয়ের সীমার বাইরে হয়, তবে SUBSTRING একটি খালি স্ট্রিং রিটার্ন করে। এটি ত্রুটি নয়, তাই প্রয়োজনে ফলাফল পূর্বে যাচাই করার লজিক যোগ করা সুপারিশ করা হয়।

7.2 সংস্করণ পার্থক্য

MySQL সংস্করণের উপর নির্ভর করে SUBSTRING ফাংশনের আচরণ ভিন্ন হতে পারে। উদাহরণস্বরূপ, কিছু পুরনো সংস্করণে মাল্টি-বাইট ক্যারেক্টার ভিন্নভাবে হ্যান্ডল করা হতে পারে। সংস্করণগুলোর সামঞ্জস্যতা পরীক্ষা করুন এবং প্রয়োজনে উপযুক্ত ব্যবস্থা গ্রহণ করুন।