কোয়েরি নিয়ে কাজ করার সময়, কখনও কখনও আমাদের ডেটাবেস থেকে রড ডেটা নিয়ে সেটিকে অন্য একটি ফরম্যাটে রিফরম্যাট করতে হয় অন্যথায় ব্যবহারের জন্য। এই আর্টিকেলে, আমরা MySQL-এ কয়েকটি ফাংশন দেখব যা স্ট্রিং টাইপস আমাদের কোয়েরিতে নিয়ে কাজ করতে সাহায্য করে।
স্কিমা বিল্ড করা
এই সেকশনটি এই পোস্টে কভার করা SQL কনসেপ্টগুলোর ইলাস্ট্রেশন জন্য একটি কুইক স্কিমা প্রস্তুত করার জন্য dànhাগত। আমরা MySQL ফাংশনগুলো ব্যবহার করছি - আমি SQL Fiddle ব্যবহার করার পরামর্শ দিই সিনট্যাক্স প্র্যাকটিস এবং আপনার সার্চ কোয়েরি রান করার জন্য। সেখানে, আপনি অন্যান্য রিলেশনাল ডেটাবেসেও আপনার কোয়েরি টেস্ট করতে পারেন।
টেবিল তৈরি এবং ভ্যালু ইনসার্ট করা
CREATE TABLE birthdays ( name varchar(200) NOT NULL, birthday varchar(10) NOT NULL ); INSERT INTO birthdays (name, birthday) VALUES("Jane", "11/20/1993"); INSERT INTO birthdays (name, birthday) VALUES("Duncan", "01/15/1987"); INSERT INTO birthdays (name, birthday) VALUES("Lucas", "07/21/1996"); INSERT INTO birthdays (name, birthday) VALUES("Alexa", "12/31/1988"); শীর্ষ চার লাইন "birthdays" টেবিলটি "name" এবং "birthday" কলামসহ তৈরি করে। বাকি ডেটাবেসে ভ্যালু ইনসার্ট করে। আমরা আমাদের কোয়েরি স্টেটমেন্ট বিল্ড করার সময় এটি ব্যবহার করব।
আমরা যদি আমাদের টেবিলে একটি বেসিক কোয়েরি রান করি, কোয়েরি স্টেটমেন্ট এবং ফলাফল দেখতে যেন:
SELECT name, birthday FROM birthdays;
ফলাফল:
| name | birthday |
| Chris | 11/20/1993 |
| Duncan | 01/15/1987 |
| Lucas | 07/21/1996 |
| Alexa | 12/31/1988 |
কোয়েরি স্টেটমেন্ট বিল্ড করা
CONCAT()
CONCAT() ফাংশন আর্গুমেন্টগুলো একসাথে জোড়া দিয়ে এক স্ট্রিংয়ে রেজাল্ট ফেরত দেয়। কমপক্ষে একটি আর্গুমেন্ট থাকে, কিন্তু একাধিক আর্গুমেন্ট থাকতে পারে। ফাংশনে আর্গুমেন্টগুলো নিম্নরূপ হতে পারে:
- বাইনারি স্ট্রিং - যদি আর্গুমেন্টের যেকোনো একটি বাইনারি স্ট্রিং হয়, রিটার্ন ভ্যালু একটি বাইনারি স্ট্রিং হবে।
- নন-বাইনারি স্ট্রিং - একটি টিপিক্যাল স্ট্রিং ভ্যালু। যদি সব আর্গুমেন্ট নন-বাইনারি স্ট্রিং ভ্যালু হয়,
CONCAT()একটি নন-বাইনারি স্ট্রিং ভ্যালু ফেরত দেয়।
- নিউমেরিক - যদি একটি ইনপুট নিউমেরিক টাইপের হয়, সেটি নন-বাইনারি স্ট্রিং-এ কোঅার্স করা হয় অন্য আর্গুমেন্টগুলো সাথে জোড়া দেওয়ার আগে।
- নাল - যদি NULL ভ্যালু থাকে, সেগুলো সিম্পলি ইগনোর করা হয়।
ফরমাল সিনট্যাক্স নিম্নরূপ:
CONCAT( <str value 1>, <str value 2>, [ … <str value N> ]);
আমরা CONCAT কীওয়ার্ড একটি পেরেনথেসিস জোড়া দিয়ে ব্যবহার করি যাতে বোঝা যায় এটি একটি ফাংশন। পেরেনথেসিসের ভেতরে N ইনপুট স্ট্রিং আছে। এখানে MySQL-এ কীভাবে দেখতে পারেন:
SELECT CONCAT(name, " ", birthday) AS Result FROM birthdays;
আমরা name, একটি স্পেস ক্যারেক্টার, এবং birthday-এর কনক্যাটেনেশন থেকে রিটার্ন ভ্যালু "SELECT" করি এবং এটিকে "Result" নাম দিই।
এই কোয়েরির ফলাফল:
| Result |
| Chris 11/20/1993 |
| Duncan 01/15/1987 |
| Lucas 07/21/1996 |
| Alexa 12/31/1988 |
এই ফলাফলটি Building the Schema সেকশনে আমরা যে আরিজিনাল কোয়েরি স্টেটমেন্ট টেস্ট করেছি সেটির সাথে কম্পেয়ার করুন। এটি কীভাবে ভিন্ন? ডেটা এইভাবে সেট আপ করার আপনার অ্যাপ্লিকেশনে কী সুবিধা হবে গিভেন 웨이ের সাপেক্ষে?
অনিবার্য সঠিক বা ভুল উত্তর নেই। এটা সব কীভাবে আপনি এই ডেটায় আপনার অ্যাপ্লিকেশনে নির্ভর করছেন সেটির ওপর।
CONCAT_WS()
CONCAT_WS() ফাংশন CONCAT() ফাংশনের মতোই, যাইহোক, একটি রিকোয়ায়ারড ফার্স্ট আর্গুমেন্ট আছে যা অরিজিনাল CONCAT() ফাংশনে নেই। এই আর্গুমেন্টটি সেপারেটর যা ফাংশনের বাকি আর্গুমেন্টগুলোর মাঝপথে যায়। CONCAT()-র বাকি নিয়মগুলো প্রযোজ্য।
ফরমাল সিনট্যাক্স নিম্নরূপ:
CONCAT_WS(<separator>, <str value 1>, <str value 2>, [ … <str value N> ]);
আমরা CONCAT_WS() কীওয়ার্ড একটি পেরেনথেসিস জোড়া দিয়ে ব্যবহার করি যাতে বোঝা যায় এটি একটি ফাংশন। পেরেনথেসিসের ভেতরে প্রথম আর্গুমেন্টটি সেপারেটর যা প্রতিটি ইনপুট স্ট্রিংর মাঝপথে যায়। বাকি আর্গুমেন্টগুলো স্ট্রিং যেগুলো আমরা জোড়া দিই। এখানে MySQL-এ কীভাবে দেখতে পারেন:
SELECT CONCAT_WS(", ", name, birthday) AS Result FROM birthdays; ফলাফলটি স্ট্রিং কনক্যাটেনেশন যেখানে প্রথম আর্গুমেন্ট বাকি আর্গুমেন্টগুলোর মাঝপথে থাকে।
| Result |
| Chris, 11/20/1993 |
| Duncan 01/15/1987 |
| Lucas 07/21/1996 |
| Alexa 12/31/1988 |
CONCAT() ফাংশনের মত, CONCAT_WS() ফাংশনও শুধু একটি কলাম ফেরত দেয়, যেটি Result নামে, যেখানে ভ্যালু হলো ইনপুট স্ট্রিং(গুলো) সেপারেটর ক্যারেক্টার সহ কনক্যাটেনেটেড।
উপসংহার
এই আর্টিকেলে, আমরা SQL CONCAT() এবং CONCAT_WS() ফাংশনগুলো কভার করেছি MySQL-এ এর ব্যবহার সংক্রান্ত। সচেতন থাকবেন অন্যান্য রিলেশনাল ডেটাবেস ব্যবহার করার সময় সিনট্যাক্সে মাইনর পার্থক্য থাকতে পারে কারণ তাদের নিজস্ব SQL ফ্লেভার থাকতে পারে। ফাংশনটির কনসেপ্ট একই, কিন্তু এটা ভিন্নভাবে ওয়ার্ডেড হতে পারে।