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

MySQL-এ CONVERT() + REPLACE() দিয়ে ASCII-এ রূপান্তর নয় এমন ক্যারেক্টার সরিয়ে ফেলা


CONVERT(... USING ASCII) + REPLACE('?', '') দিয়ে নন-এস্কিআই ক্যারেক্টার সরানো

MySQL-এ CONVERT(str USING ASCII) দিয়ে স্ট্রিংকে ASCII-এ কনভার্ট করলে নন-এস্কিআই ক্যারেক্টার (যেমন €, §) '?' চিহ্নে রূপান্তরিত হয়। তারপর REPLACE(..., '?', '') দিয়ে সেগুলো সরিয়ে ফেলা যায়।

টেবিল ও ডেটা

mysql> CREATE TABLE DemoTable (Value VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES('€986'), ('§97');

আসল ডেটা

+--------+
| Value  |
+--------+
| €986   |
| §97    |
+--------+

ASCII কনভার্ট + '?' সরানো

mysql> SELECT REPLACE(CONVERT(Value USING ASCII), '?', '') FROM DemoTable;
+--------------------------------------------+
| REPLACE(CONVERT(Value USING ASCII), '?', '') |
+--------------------------------------------+
| 986                                        |
| 97                                         |
+--------------------------------------------+

ব্যাখ্যা

  • CONVERT(Value USING ASCII) — '€986' → '?986', '§97' → '?97'।
  • REPLACE(..., '?', '') — সব '?' কে খালি স্ট্রিং দিয়ে রিপ্লেস করে।
  • ফলাফল: শুধু ASCII ডিজিট (986, 97) থাকে।

সীমাবদ্ধতা

  • যদি স্ট্রিংয়ে আসল '?' থাকে, সেটিও মুছে যাবে।
  • UTF-8 ডেটার জন্য CONVERT(... USING UTF8) ব্যবহার করুন।
  • MySQL 8.0+ এ REGEXP_REPLACE দিয়ে আরও নিখুঁত ফিল্টারিং করা যায়।
  1. MySQL-এ ORDER BY Amount=0, Amount দিয়ে শূন্য মানগুলো শেষে পাঠানো

  2. MySQL-এ মাস অনুযায়ী রেকর্ড সিলেক্ট করা (MONTH() ফাংশন)

  3. MySQL-এ বর্তমান তারিখ (NOW/CURDATE) থেকে ছোট তারিখের রেকর্ড বের করা

  4. MySQL-এ CONCAT_WS ব্যবহার করে শর্তসাপেক্ষ রো সিলেক্ট করা