MySQL-এ REGEXP দিয়ে সরাসরি UPDATE করা সম্ভব নয়। এর পরিবর্তে LIKE অপারেটর ব্যবহার করতে হয়। MySQL UPDATE문에 REGEXP সাপোর্ট করে না। LIKE অপারেটরের সিনট্যাক্স নিচে দেওয়া হলো:
UPDATE yourTableName SET yourColumnName= REPLACE(yourColumnName,'yourValue', '' ) WHERE yourColumnName LIKE '%yourValueThatWillReplace)%';
এটি বুঝতে একটি টেবিল তৈরি করা যাক।
mysql> create table Replace_Demo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Value varchar(20),
-> PRIMARY KEY(Id)
-> ); Query OK, 0 rows affected (0.62 sec)
ইনসার্ট কমান্ড দিয়ে কিছু রেকর্ড ইনসার্ট করা যাক। কোয়েরিটি হলো:
mysql> insert into Replace_Demo(Value) values('221)'); Query OK, 1 row affected (0.22 sec) mysql> insert into Replace_Demo(Value) values('321'); Query OK, 1 row affected (0.24 sec) mysql> insert into Replace_Demo(Value) values('354)'); Query OK, 1 row affected (0.18 sec) mysql> insert into Replace_Demo(Value) values('223)'); Query OK, 1 row affected (0.09 sec) mysql> insert into Replace_Demo(Value) values('446'); Query OK, 1 row affected (0.13 sec)
সিলেক্ট স্টেটমেন্ট দিয়ে সব রেকর্ড দেখানো যাক। কোয়েরিটি হলো:
mysql> select *from Replace_Demo;
আউটপুট নিচে দেওয়া হলো:
+----+-------+ | Id | Value | +----+-------+ | 1 | 221) | | 2 | 321 | | 3 | 354) | | 4 | 223) | | 5 | 446 | +----+-------+ 5 rows in set (0.00 sec)
REGEXP-র পরিবর্তে LIKE অপারেটর ব্যবহার করে আপডেট করার কোয়েরিটি নিচে দেওয়া হলো:
mysql> update Replace_Demo set Value = REPLACE(Value,'221)', '' )
-> WHERE Value like '%221)%'; Query OK, 1 row affected (0.21 sec) Rows matched: 1 Changed: 1 Warnings: 0
আবার সিলেক্ট স্টেটমেন্ট দিয়ে টেবিলের রেকর্ডগুলো চেক করা যাক। কোয়েরিটি হলো:
mysql> select *from Replace_Demo;
আউটপুট নিচে দেওয়া হলো:
+----+-------+ | Id | Value | +----+-------+ | 1 | | | 2 | 321 | | 3 | 354) | | 4 | 223) | | 5 | 446 | +----+-------+ 5 rows in set (0.00 sec)
দেখা যাচ্ছে, 221) মানটি খালি স্ট্রিং দিয়ে রিপ্লেস হয়েছে। MySQL-এ REGEXP দিয়ে আপডেট করা যাবে না, তাই LIKE এবং REPLACE() ফাংশন কম্বাইন করে এই কাজটি করতে হয়।