MySQL-এ কোনো কলামের ভিতরের নির্দিষ্ট স্ট্রিং খুঁজে বদলাতে REPLACE() ফাংশন ব্যবহার করা হয়। এটি কেস-সেনসিটিভ এবং সব আউটকেমন্স রিপ্লেস করে।
সিনট্যাক্স
UPDATE table_name
SET column_name = REPLACE(column_name, 'old_string', 'new_string');
উদাহরণ: ফাইল পথ আপডেট
CREATE TABLE find_replace_demo (
file_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
file_directory TEXT
);
INSERT INTO find_replace_demo (file_directory) VALUES
('C://User//MySQL'),
('D://WebsiteImage//image1.jpg'),
('E://Java//AdvancedJava');
আপডেট ক্যোয়ারি
UPDATE find_replace_demo
SET file_directory = REPLACE(file_directory,
'E://Java//AdvancedJava',
'E://Java//SpringAndHibernateFramework');
ফলাফল
+--------+---------------------------------------+
| file_id| file_directory |
+--------+---------------------------------------+
| 1 | C://User//MySQL |
| 2 | D://WebsiteImage//image1.jpg |
| 3 | E://Java//SpringAndHibernateFramework |
+--------+---------------------------------------+
বেশি উদাহরণ
একসাথে একাধিক রিপ্লেস (নেস্টেড)
UPDATE products
SET description = REPLACE(REPLACE(description, 'old_term1', 'new_term1'), 'old_term2', 'new_term2');
শর্তসাপেক্ষ রিপ্লেস (WHERE ক্লজ সহ)
UPDATE users
SET email = REPLACE(email, '@old-domain.com', '@new-domain.com')
WHERE email LIKE '%@old-domain.com';
HTML এনটিটি ডিকোড
UPDATE content
SET body = REPLACE(body, '<', '<')
WHERE body LIKE '%<%';
পারফরম্যান্স টিপস
- বড় টেবিলে
WHERE column LIKE '%old_string%'যোগ করুন যাতে শুধু প্রাসঙ্গিক সারিগুলো আপডেট হয় REPLACE()ইনডেক্স ব্যবহার করে না — فول টেবিল স্ক্যান হবে- ব্যাচে আপডেট করুন (LIMIT 1000 সহ লুপ) লক কনটেনশন কমাতে
SELECT-এ ব্যবহার (ডেটা বদলाए বিনা)
SELECT REPLACE(file_directory, '//', '/') AS cleaned_path
FROM find_replace_demo;