MySQL-এ বিল্ট-ইন ফাংশন নেই যা একের অধিক স্পেস একে কমায়। কিন্তু একটি কাস্টম ফাংশন লিখে এটি করা যায়।
ফাংশন তৈরির সিনট্যাক্স
DELIMITER // CREATE FUNCTION yourFunctionName(parameter1, ...) RETURNS datatype BEGIN -- your statements END; // DELIMITER ;
উদাহরণ: function_DeleteSpaces
mysql> DELIMITER //
mysql> CREATE FUNCTION function_DeleteSpaces(value VARCHAR(200)) RETURNS VARCHAR(200)
-> BEGIN
-> SET value = TRIM(value);
-> WHILE INSTR(value, ' ') > 0 DO
-> SET value = REPLACE(value, ' ', ' ');
-> END WHILE;
-> RETURN value;
-> END; //
Query OK, 0 rows affected (0.20 sec)
mysql> DELIMITER ;
কার্যকারিতা: ১) TRIM() দিয়ে শুরু ও শেষ স্পেস সরানো। ২) WHILE লুপে ডবল স্পেস (' ') খুঁজে পেলে সিঙ্গেল স্পেস (' ') দিয়ে রিপ্লেস করা, যতক্ষণ না ডবল স্পেস থাকে।
ফাংশন কল করুন
mysql> SELECT function_DeleteSpaces(' John Smith ');
ফলাফল
+--------------------------------------------------+
| function_DeleteSpaces(' John Smith ') |
+--------------------------------------------------+
| John Smith |
+--------------------------------------------------+
আরেক উদাহরণ (বিচে একাধিক স্পেস)
mysql> SELECT function_DeleteSpaces(' John Smith 123 ');
ফলাফল
+---------------------------------------------------------+
| function_DeleteSpaces(' John Smith 123 ') |
+---------------------------------------------------------+
| John Smith 123 |
+---------------------------------------------------------+
আধুনিক বিকল্প (MySQL 8.0+): REGEXP_REPLACE(column, '[ ]{2,}', ' ') ব্যবহার করলে এক লাইনে হয়ে যায়।