কম্পিউটার টিউটোরিয়াল

MySQL-এ STR_TO_DATE ব্যবহার করে ক্যালকুলেটেড কালামে HAVING ক্লজ লাগানো

SELECT লিস্টে তৈরি করা ক্যালকুলেটেড কালামে (যেমন STR_TO_DATE()) সরাসরি WHERE ক্লজ ব্যবহার করা যায় না। সেক্ষেত্রে HAVING ক্লজ ব্যবহার করতে হয়।

টেবিল তৈরি এবং ডেটা ইনসার্ট

mysql> CREATE TABLE DemoTable (
    -> AdmissionDate VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.55 sec)

mysql> INSERT INTO DemoTable VALUES('10/12/2017'), ('01/11/2018'), ('31/01/2019'), ('09/06/2019'), ('19/04/2019');

সকল রেকর্ড

+---------------+
| AdmissionDate |
+---------------+
| 10/12/2017    |
| 01/11/2018    |
| 31/01/2019    |
| 09/06/2019    |
| 19/04/2019    |
+---------------+

২০১৯-০১-০১ এর পরের তারিখগুলো বের করা

mysql> SELECT STR_TO_DATE(AdmissionDate, '%d/%m/%Y') AS newDate
    -> FROM DemoTable
    -> HAVING newDate >= '2019-01-01';

আউটপুট:

+------------+
| newDate    |
+------------+
| 2019-01-31 |
| 2019-06-09 |
| 2019-04-19 |
+------------+

ব্যাখ্যা: WHERE এ অ্যালিয়াস বা এক্সপ্রেশন ব্যবহার করা যায় না (MySQL-এ কিছু এক্সেপশন ছাড়া)। HAVING গ্রুপিং ছাড়াও ফিল্টারের জন্য ব্যবহার করা যায়।

  1. MySQL-এ IS NOT NULL দিয়ে কলামে NULL বা NOT NULL চেক করা

  2. MySQL-এ SUBSTRING_INDEX() ব্যবহার করে কলাম বিভক্ত করা (স্প্লিট)

  3. MySQL-এ কলামকে NOT NULL ডিফাইন করা যাতে সেটি খালি (NULL) না থাকে

  4. MySQL-এ ALTER TABLE MODIFY দিয়ে বিদ্যমান কলামে NOT NULL অ্যাট্রিবিউট সেট করা