- 1 හැඳින්වීම
- 2 MySQL ස්ට්රින් ප්රතිස්ථාපන මූලික (REPLACE ක්රියාවලිය)
- 3 මූලික භාවිතය සහ ප්රායෝගික උදාහරණ
- 4 සාමාන්ය භාවිතා කේස් නියැදි එකතුව
- 5 උසස් තාක්ෂණ සහ ගැටළු වලින් වැළැක්වීම
- 6 නියමිත ප්රකාශන (Regular Expressions) සමඟ 문자열 ප්රතිස්ථාපනය (MySQL 8.0+ පමණක්)
- 7 අනෙකුත් 문자열 ක්රියාකාරකම් සමඟ සංසන්දනය සහ සටහන්
- 8 කාර්ය සාධනය සහ අවධානම්
- 9 නඩු අධ්යයනය: වාස්තුකාලීන භාවිත උදාහරණ
- 10 සාරාංශය සහ වැඩ පරීක්ෂා ලැයිස්තුව
- 11 FAQ (නිතර අසන ප්රශ්න)
- 11.1 Q1. REPLACE() case‑sensitive ද?
- 11.2 Q2. NULL අගයක් ඇති තීරුවකට එය භාවිතා කළහොත් කුමක් වේද?
- 11.3 Q3. එකවර බහු රටා ප්රතිස්ථාපනය කළ හැදුවද?
- 11.4 Q4. නියමිත ප්රකාශන (regular expressions) භාවිතා කර ප්රතිස්ථාපනය කෙසේ කළ හැකිද?
- 11.5 Q5. REPLACE INTO වලින් වෙනස්කම කුමක්ද?
- 11.6 Q6. ප්රතිස්ථාපනයෙන් පසු මුල් දත්ත නැවත ලබා ගත හැකිද? (ප්රතිසාධනය)
- 11.7 Q7. මගේ MySQL අනුවාදය කෙසේ පරීක්ෂා කරගත හැකිද?
- 12 සම්බන්ධිත සබැඳි සහ යොමුකිරීම්
හැඳින්වීම
MySQL සමඟ වැඩ කරන විට, “වගුවක් පුරා නියමිත ස්ට්රින් එකක් පමණක් ප්රතිස්ථාපනය කරන්න” හෝ “දත්ත වැරදි bulk ලෙස සකස් කරන්න” වැනි තත්ත්වයන්ට මුහුණ දීමට අසාමාන්ය නොවේ. උදාහරණයක් ලෙස, e‑commerce අඩවියක නිෂ්පාදන විස්තරවල භාවිතා වූ URL එක වෙනස් වූ විට, පසුගිය ඇතුළත් කිරීමේ වැරදි එකවර සකස් කිරීමට අවශ්ය වූ විට, හෝ හයිෆන්වලින් ස්ලෑෂ්වලට (e.g., hyphens to slashes) පරිවර්තනය කිරීමේදී, ඔබට ස්ට්රින් ප්රතිස්ථාපනය අවශ්ය වේ.
මෙම ලිපියේදී, MySQL හි ස්ට්රින් ප්රතිස්ථාපනය සඳහා ප්රායෝගික ක්රම සහ තාක්ෂණ මූලික සිට උසස් භාවිතය දක්වා සවිස්තරාත්මකව පැහැදිලි කරමු. ඔබට සාමාන්යයෙන් භාවිතා වන REPLACE() ක්රියාවලිය, වාස්තුක උදාහරණ, බහු ප්රතිස්ථාපන කාර්යක්ෂම ක්රම, සහ නියමිත ප්රකාශන (regular expressions) භාවිතා කරමින් උසස් ප්රතිස්ථාපන පිළිබඳ දැනගත හැක.
අපි MySQL අනුවාදය අනුව ලබා ගත හැකි ක්රියාකාරකම් අතර වෙනස්කම්, අනපේක්ෂිත දත්ත අහිමි වීම වැලැක්වීමට අවශ්ය ප්රධාන අවධානය, සහ කාර්යක්ෂමතා සලකා බැලීම— ප්රායෝගික පරිසරයන්හි සැබැවින්ම ප්රයෝජනවත් තොරතුරු ලබා දෙනු ඇත.
මෙම ලිපිය කියවා අවසන් වූ පසු, ඔබට පහත සඳහන් සියලු ප්රශ්න සහ අභියෝග විසඳීමට හැකි වනු ඇත:
- MySQL හි නියමිත ස්ට්රින් එකක් ප්රතිස්ථාපනය කිරීමේ අති සරල ක්රමය කුමක්ද?
- බහු රටා bulk ලෙස ප්රතිස්ථාපනය කිරීමේ ක්රමය කුමක්ද?
- නියමිත ප්රකාශන (regular expressions) භාවිතා කරමින් සවිස්තරාත්මක ප්රතිස්ථාපනය කළ හැකිද?
- එක්වර විශාල ප්රමාණයේ දත්ත යාවත්කාලීන කිරීමේ අවදානම් සහ අවධානම් කුමනවාද?
- දෝෂ සිදුවීම වැලැක්වීමට දත්ත පිටපත් (backup) ගැනීමේ ක්රමය කුමක්ද?
මෙම අන්තර්ගතය ආරම්භකයන් සිට ප්රායෝගිකව ක්රියාත්මක වන පරිශීලකයන් දක්වා, MySQL හි ස්ට්රින් ප්රතිස්ථාපනය විශ්වාසයෙන් අත්කර ගැනීමට කැමති සියලු දෙනාට සුදුසුය.
MySQL ස්ට්රින් ප්රතිස්ථාපන මූලික (REPLACE ක්රියාවලිය)
MySQL හි ස්ට්රින් ප්රතිස්ථාපනය කිරීමට අවශ්ය නම්, සාමාන්යයෙන් භාවිතා වන මෙවලම REPLACE() ක්රියාවලියයි. REPLACE() යනු නියමිත රටාවක් සොයා, එය වෙනත් ස්ට්රින් එකක් සමඟ bulk ලෙස ප්රතිස්ථාපනය කරන ක්රියාවලියකි.
දත්ත නිවැරදි කිරීමේ නිතර සිදුවන අවස්ථා සහ දත්ත ගබඩා විශාල පරිමාණයේ batch පරිවර්තන සඳහා මෙය ප්රයෝජනවත් වේ.
REPLACE() හි මූලික ව්යවස්ථාව
REPLACE(original_string, search_string, replacement_string)
- original_string : සංස්කරණය කිරීමට අවශ්ය ස්ට්රින් එක, හෝ වගුවේ තීරුවේ නාමය.
- search_string : ඔබට ප්රතිස්ථාපනය කිරීමට අවශ්ය කොටස.
- replacement_string : නව ස්ට්රින් එක ඇතුළත් කිරීම.
උදාහරණයක් ලෙස:
SELECT REPLACE('I love MySQL!', 'MySQL', 'PostgreSQL');
මෙම විමසුම “I love MySQL!” යන ස්ට්රින් එක තුළ “MySQL” සොයා “PostgreSQL” ලෙස ප්රතිස්ථාපනය කරයි,
ඒ නිසා ප්රතිඵලය “I love PostgreSQL!” වේ.
අකුරු සංවේදනය (Case Sensitivity)
REPLACE() අකුරු සංවේදන (case‑sensitive) සෙවීම සහ ප්රතිස්ථාපනය සිදු කරයි. උදාහරණයක් ලෙස, “mysql” සහ “MySQL” වෙන වෙනම ස්ට්රින් ලෙස සැලකේ.
ඉලක්ක ස්ට්රින් එක සොයා නොගත් පසු, මුල් ස්ට්රින් එක 그대로 ආපසු ලබා දේ.
සහය දක්වන දත්ත වර්ග
REPLACE() CHAR, VARCHAR, TEXT වැනි සාමාන්ය ස්ට්රින් තීරු සමඟ භාවිතා කළ හැක. නමුත් BLOB වැනි විශේෂ දත්ත වර්ග සමඟ භාවිතා කරන විට, හැසිරීම අපේක්ෂිත නොවිය හැකි බැවින් අවධානයෙන් සිටිය යුතුය.
මෙම ආකාරයෙන්, REPLACE() සරල හා අවබෝධයට පහසු බව නිසා අකර්ෂණීය වේ.
ඊළඟ කොටස්වල, REPLACE() භාවිතා කරමින් ප්රායෝගික SQL උදාහරණ සහ වගු දත්ත වලට එය යෙදීම පිළිබඳ විස්තර කරමු.
මූලික භාවිතය සහ ප්රායෝගික උදාහරණ
REPLACE() ඉතා සරල වුවද, ප්රායෝගික වැඩකිරීමේදී “වගුවක තීරුවේ ස්ට්රින් bulk ලෙස ප්රතිස්ථාපනය” කිරීමේ අවශ්යතාවය බොහෝවිට පෙනේ. මෙහිදී, REPLACE() සමඟ මූලික මෙහෙයුම් සහ concrete SQL උදාහරණ භාවිතා කරමින් වගු දත්ත batch‑fix කිරීමේ ක්රම පැහැදිලි කරමු.
SELECT සමඟ සරල ස්ට්රින් ප්රතිස්ථාපනය
පළමුව, මෙන්න අති සරල භාවිතය: නියමිත ස්ට්රින් එකක පෙළ ප්රතිස්ථාපනය කිරීම.
SELECT REPLACE('Hello, mysql user!', 'mysql', 'MySQL');
මෙම විමසුම “mysql” යන වචනය “MySQL” ලෙස ප්රතිස්ථාපනය කර, “Hello, MySQL user!” ලෙස ප්රතිඵලය ලබා දෙයි.
UPDATE සමඟ වගුවේ තීරුවේ Bulk ප්රතිස්ථාපනය
A common real-world use case is replacing strings across a specific column in a table.
For example, if you want to update all occurrences of the old domain oldsite.com to the new domain newsite.com in product descriptions, you can run the following SQL:
UPDATE products
SET description = REPLACE(description, 'oldsite.com', 'newsite.com');
This SQL replaces every occurrence of “oldsite.com” in the description column of the products table with “newsite.com”.
ක්රියාත්මක කිරීමේදී අවධානම්
REPLACE() භාවිතා කරමින් UPDATE ක්රියාවලිය සියලු රෙකෝඩ් මත ක්රියාත්මක වේ, එමනිසා අදහස් කර ඇති දේට වඩා වැඩි ප්රමාණයක් නැවත ලියන අවදානමක් ඇත.
නිෂ්පාදන පරිසරයේ ධාවනය කිරීමට පෙර, ඇති බැක්අප් එකක් ගෙන, පරීක්ෂණ පරිසරයකදී හැසිරීම තහවුරු කරගන්න.
WHERE වාක්යය භාවිතයෙන් බලපෑම සීමා කිරීම
ඔබට දත්ත උපසෙට් එකක් පමණක් සකස් කිරීමට අවශ්ය නම්, WHERE වාක්යයක් භාවිතා කරන්න. උදාහරණයක් ලෙස, 2024 හෝ ඊට පසු එකතු කරන ලද නිෂ්පාදන පමණක් ඉලක්ක කර ගැනීමට:
UPDATE products
SET description = REPLACE(description, 'oldsite.com', 'newsite.com')
WHERE created_at >= '2024-01-01';
This helps prevent unnecessary rewrites.
Once you understand these basics, everyday operations and data‑cleaning tasks become much more efficient.
සාමාන්ය භාවිතා කේස් නියැදි එකතුව
REPLACE() is helpful in many real‑world situations where you think, “Can I replace this?” Below are practical samples for common use cases.
1. වැරදි සහ වැරදි ලෙස ලියූ පෙළ සකස් කිරීම
For example, it’s useful when you want to correct frequent input mistakes in bulk.
UPDATE users
SET profile = REPLACE(profile, 'htto://', 'http://');
This SQL batch‑corrects the mistakenly entered “htto://” to “http://”.
2. URL හෝ ඩොමේන්වල බහුතර ප්රතිස්ථාපනය
This is useful when you redesign or migrate a website and want to replace an old domain with a new one across your data.
UPDATE blog_posts
SET content = REPLACE(content, 'old-domain.jp', 'new-domain.jp');
3. අවශ්ය නොවන ඉඩ, නව පේළි හෝ සංකේත ඉවත් කිරීම
If unintended spaces or newline codes are mixed into your data, you can remove them in bulk with REPLACE().
UPDATE addresses
SET zipcode = REPLACE(zipcode, ' ', '');
This example removes all spaces from postal codes. For newlines, specify '\n' or '\r'.
4. ආකෘති සම්මත කිරීම (හයිෆන් සිට ස්ලෑෂ්, පූර්ණ-පළල සිට අර්ධ-පළල, ආදිය)
You can also standardize data formats easily with REPLACE().
UPDATE products
SET code = REPLACE(code, '-', '/');
If you want to convert full‑width characters to half‑width in bulk, you can also nest REPLACE() multiple times.
5. එකවර බහු රටා ප්රතිස්ථාපනය
If you want to replace multiple patterns at the same time, nest REPLACE() calls.
UPDATE contacts
SET note = REPLACE(REPLACE(note, '株式会社', '(株)'), '有限会社', '(有)');
This converts “株式会社” and “有限会社” into abbreviated forms in one go.
REPLACE() is a powerful feature for efficiently handling tasks that require “lots of edits” and would be painful to do manually.
උසස් තාක්ෂණ සහ ගැටළු වලින් වැළැක්වීම
REPLACE() is very convenient, but depending on how you use it, you may run into unexpected trouble—or you may be able to operate much more efficiently. Here we explain practical advanced techniques and tips to prevent problems.
1. NULL අගයන් සැලසීම
If the target column is NULL, REPLACE() returns NULL as well. This can leave data unchanged in unexpected ways. If you want to ensure replacement is applied even when NULL values exist, combine it with IFNULL().
UPDATE users
SET comment = REPLACE(IFNULL(comment, ''), 'NGワード', '***');
This treats NULL as an empty string so replacement will be applied.
2. අකුරු-කේස් නොසලකා ප්රතිස්ථාපනය
REPLACE() is case‑sensitive by default. If you want to replace both uppercase and lowercase variations, it’s common to combine LOWER() / UPPER() for comparison and perform replacement in two passes as needed.
UPDATE articles
SET title = REPLACE(REPLACE(title, 'MySQL', 'MariaDB'), 'mysql', 'MariaDB');
3. බහු-පියවර ප්රතිස්ථාපනය (Nested REPLACE)
ඔබට එකවර බහු විවිධ රටා ප්රතිස්ථාපනය කිරීමට අවශ්ය නම්, REPLACE() ඇමතුම් අන්තර්ගත කරන්න.
UPDATE logs
SET message = REPLACE(REPLACE(message, 'error', 'warning'), 'fail', 'caution');
4. UPDATE + WHERE සමඟ බලපෑම සීමා කරන්න
සියලු දත්ත එකවර යාවත්කාලීන කිරීම වෙනුවට, ඔබට අවශ්ය පේළි පමණක් ඉලක්ක කර ගැනීමට WHERE වාක්යය භාවිතා කරන්න.
UPDATE customers
SET email = REPLACE(email, '@oldmail.com', '@newmail.com')
WHERE registered_at >= '2023-01-01';
5. පරීක්ෂණ පරිසරයක සෑම විටම තහවුරු කර ගන්න සහ බැකප් ගන්න
REPLACE() භාවිතා කරමින් කරන යාවත්කාලීන කිරීම් බොහෝවිට ආපසු හැරවීමට අමාරු වේ. ඒවා නිෂ්පාදනයේ ක්රියාත්මක කිරීමට පෙර, සෑම විටම බැකප් එකක් ගන්න. නියැලූ දත්ත සමඟ හෝ පරීක්ෂණ පරිසරයක පරීක්ෂා කිරීම අවදානම ගණනාවෙන් අඩු කරයි.
REPLACE() නිවැරදිව යොදා ගැනීමෙන්, ඔබට 문자열 ප්රතිස්ථාපන කාර්යයන් වඩා ආරක්ෂිතව සහ කාර්යක්ෂමව සිදු කළ හැක.
නියමිත ප්රකාශන (Regular Expressions) සමඟ 문자열 ප්රතිස්ථාපනය (MySQL 8.0+ පමණක්)
MySQL 8.0 සහ ඊට පසු අනුව, ඔබට REPLACE() පමණක් නොව REGEXP_REPLACE() භාවිතා කර නියමිත ප්රකාශන (regular expressions) භාවිතයෙන් උසස් ප්රතිස්ථාපන සිදු කළ හැක. මෙය සංකීර්ණ අවස්ථා සඳහා ලවච්චි රටා ගැලපීම සහ කාර්යක්ෂම දත්ත පිරිසිදු කිරීම සක්රීය කරයි.
REGEXP_REPLACE() හි මූලික ව්යවස්ථාව
REGEXP_REPLACE(original_string, regex_pattern, replacement_string)
- original_string : සංස්කරණය කිරීමට ඇති 문자열 හෝ තීරුවේ නාමය.
- regex_pattern : ගැලපීමට ඇති රටාව (උදාහරණයක් ලෙස
[0-9]{3}-[0-9]{4}). - replacement_string : ඇතුළත් කිරීමට නව 문자열ය.
උදාහරණ 1: දුරකථන අංක වලින් හයිෆන් ඉවත් කිරීම
දුරකථන අංක වලින් සියලු හයිෆන් ඉවත් කිරීමට අවශ්ය නම්, ඔබට මෙසේ ලියන්න පුළුවන්:
UPDATE users
SET tel = REGEXP_REPLACE(tel, '-', '');
උදාහරණ 2: තැපැල් කේත ආකෘතිය සම්මත කිරීම
විවිධ ආකෘති (උදාහරණයක් ලෙස “123-4567” සහ “1234567”) වල තැපැල් කේත සම්මත කිරීම සඳහා නියමිත ප්රකාශන (regular expressions)ද ප්රයෝජනවත් වේ.
UPDATE addresses
SET zipcode = REGEXP_REPLACE(zipcode, '([0-9]{3})-?([0-9]{4})', '\1-\2');
මෙම SQL “1234567” සහ “123-4567” දෙකම “123-4567” ආකෘතියට සම්මත කරයි.
උදාහරණ 3: අකුරු-අංක නොවන අක්ෂර ඉවත් කිරීම
ඔබට අකුරු සහ අංක හැර වෙනත් සියලු අක්ෂර ඉවත් කළ හැක.
UPDATE records
SET code = REGEXP_REPLACE(code, '[^a-zA-Z0-9]', '');
මෙය code තීරුවෙන් සියලු අකුරු-අංක නොවන අක්ෂර ඉවත් කරයි.
ඔබේ MySQL අනුවාදය පරීක්ෂා කිරීමේ ක්රමය
REGEXP_REPLACE() MySQL 8.0 සහ ඊට පසු පමණක් ලබා ගත හැක. ඔබේ වත්මන් MySQL අනුවාදය මෙම විමසුමෙන් පරීක්ෂා කළ හැක:
SELECT VERSION();
ඔබ MySQL 5.x වැනි පැරණි අනුවාදයක් භාවිතා කරන්නේ නම්, REGEXP_REPLACE() ලබා ගත නොහැක, එබැවින් REPLACE() භාවිතා කිරීම හෝ යෙදුම් පාර්ශ්වයේ ප්රතිස්ථාපනය සිදු කිරීම ගැන සිතන්න.
දත්ත රටා විශාල ලෙස වෙනස් වන විට හෝ සංකීර්ණ පරිවර්තන අවශ්ය වන විට නියමිත ප්රකාශන (regex) මත පදනම් වූ ප්රතිස්ථාපනය ඉතා බලවත් වේ.
අනෙකුත් 문자열 ක්රියාකාරකම් සමඟ සංසන්දනය සහ සටහන්
MySQL විවිධ ප්රයෝජනවත් 문자열 ක්රියාකාරකම් ලබා දේ. එක් එක් ක්රියාකාරකමට වෙනස් අරමුණු සහ ලක්ෂණ ඇති බැවින්, ප්රතිස්ථාපන සහ සංස්කරණ කාර්යයන් සඳහා සුදුසුතම එක තෝරා ගැනීම වැදගත් වේ. මෙහිදී REPLACE(), REGEXP_REPLACE(), INSERT(), සහ CONCAT() වැනි පොදු ක්රියාකාරකම් සංසන්දනය කරමු.
1. REPLACE
- Use case : 문자열 හෝ තීරුවේ “නියම ගැලපීම” උපස්ථයක් වෙනත් 문자열යක් සමඟ ප්රතිස්ථාපනය කිරීම.
- Characteristics : අකුරු-කේස් සංවේදී; සරල ප්රතිස්ථාපනය සඳහා ඉතා පහසු.
- Example :
SELECT REPLACE('cat and dog', 'cat', 'fox'); -- → "fox and dog"
2. REGEXP_REPLACE (MySQL 8.0+)
- Use case : නියමිත ප්රකාශන රටාවකට ගැලපෙන කොටස් ප්රතිස්ථාපනය කිරීම.
- Characteristics : සංකීර්ණ රටා ගැලපීම, බහු රටා ප්රතිස්ථාපනය, සහ අංශික උපුටා ගැනීම/සංස්කරණය සඳහා ඉතා හොඳ.
- Example :
SELECT REGEXP_REPLACE('a123b456c', '[a-z]', ''); -- → "123456"
3. INSERT
- භාවිතය : “Insert” (ඇතුළත් කිරීම) යනු, නියමිත ස්ථානයේ සිට නියමිත දිගක් අතිරේකයෙන් මාරු කිරීම.
- විශේෂත්වය : කොටස් මාරු/ඇතුළත් කිරීම සඳහා සුදුසු, නමුත් සාමාන්ය මාරු කිරීමට වඩා අතිරේක කිරීමක් වැනි.
- උදාහරණය :
SELECT INSERT('abcdef', 2, 3, 'XYZ'); -- → "aXYZef"

4. CONCAT
- භාවිතය : “Concatenate” (එක් කිරීම) බහු ස්ට්රින් හෝ තීරුවේ අගයන්.
- විශේෂත්වය : මාරු/සංස්කරණය සඳහා නොවේ; ස්ට්රින් එකට එකතු කිරීම සඳහා භාවිතා වේ.
- උදාහරණය :
SELECT CONCAT('abc', '123'); -- → "abc123"
5. SUBSTRING / LEFT / RIGHT
- භාවිතය : ස්ට්රින් එකේ කොටසක් ලබා ගැනීම.
- විශේෂත්වය : දත්ත කොටස් කපන සහ ලබා ගැනීමට ඉතා සුදුසු.
- උදාහරණය :
SELECT SUBSTRING('abcdef', 2, 3); -- → "bcd"
Quick Comparison Table
| Feature | Replacement | Regex Replacement | Insert/Overwrite | Concatenation | Substring Extraction |
|---|---|---|---|---|---|
| Function | REPLACE | REGEXP_REPLACE | INSERT | CONCAT | SUBSTRING, etc. |
| Pattern support | × (exact match only) | ○ (regex supported) | × | × | × |
| MySQL version | All | 8.0+ | All | All | All |
ඔබගේ භාවිතය සහ MySQL අනුවාදය අනුව නිවැරදි ක්රියාකාරකම තෝරා ගැනීමෙන්, දත්ත මත වැඩ කිරීම වඩා කාර්යක්ෂම හා ආරක්ෂිත වේ.
කාර්ය සාධනය සහ අවධානම්
MySQL හි බහු-ස්ට්රින් මාරු කිරීම සිදු කරන විට, විශේෂයෙන් විශාල වගු හෝ නිෂ්පාදන පරිසරයන්හි, අනපේක්ෂිත ගැටළු හෝ කාර්ය සාධන අඩු වීමක් සිදුවිය හැක. මෙහිදී ආරක්ෂිත හා කාර්යක්ෂම ලෙස කාර්යය සිදු කිරීම සඳහා ප්රධාන අවධානම් සහ කාර්ය සාධන උපදෙස් පහත දැක්වේ.
1. විශාල දත්ත කට්ටල වල බල්ක් යාවත්කාලීන කිරීම් සමඟ අවධානයෙන් සිටින්න
REPLACE() හෝ REGEXP_REPLACE() භාවිතා කරන UPDATE ප්රකාශන, ඉලක්ක පේළි පරික්ෂා කර නැවත ලියයි. විශාල දත්ත කට්ටල වලදී, ක්රියාකාලය වැඩි වේ හා සේවාදායකයේ පූර්ණභාරය වැඩි විය හැක. දහස් ගණනකින් මිලියන ගණනක් පේළි ඇති වගු වල, අනෙකුත් විමසුම් මන්දගාමී විය හැක, සහ අතින් අගුළු හෝ කාලය ඉක්මවන අවස්ථා සිදුවිය හැක.
2. දර්ශක (Index) මත බලපෑම
UPDATE එකක් දර්ශකගත තීරුවල (උදා: email, code) අගයන් වෙනස් කරන්නේ නම්, දර්ශක නැවත ගොඩනැගීමට අවශ්ය විය හැක. මෙය කාර්ය සාධනයට බලපායි. අනිවාර්ය නැවත ලිවීම් වලින් වැළැක්වීමට, WHERE වාක්යයක් භාවිතා කර ඉලක්ක දත්ත සීමා කිරීම වැදගත් වේ.
3. ගනුදෙනු (Transactions) සහ රෝල්බැක් (Rollback) භාවිතා කරන්න
විශාල ප්රතිලේඛන සඳහා, ගනුදෙනුවක් භාවිතා කිරීමෙන්, දෝෂයක් සිදු වූ විට හෝ මාරු ප්රතිඵල අපේක්ෂා කළ පරිදි නොවූ විට රෝල්බැක් කිරීමේ හැකියාව ලැබේ.
START TRANSACTION;
UPDATE users SET comment = REPLACE(comment, 'A', 'B') WHERE ...;
-- If everything looks good
COMMIT;
-- If something goes wrong
ROLLBACK;
මෙම ක්රමය ඔබට වැඩ කිරීමේ විශ්වාසය වැඩි කරයි.
4. නිෂ්පාදනයේ සැමවිටම බැකප් (Backup) ගන්න
විශාල-පරිමාණ බැච් යාවත්කාලීන කිරීම් සිදු කිරීමට පෙර, සැමවිටම පළමුව බැකප් එකක් ගන්න. අනපේක්ෂිත දෝෂ හෝ දත්ත අහිමි වීමක් සිදු වූ විට, බැකප් එකෙන් ප්රතිස්ථාපනය කළ හැක.
5. බැච් ප්රොසෙසින් (Batch Processing) හෝ වෙන් කර ක්රියාත්මක කිරීම උදව් කරයි
පේළි ගණන අතිශය විශාල නම්, සියල්ල එකවර යාවත්කාලීන කිරීමේ වෙනුවට, කාර්යය කුඩා කොටස් (උදා: ID පරාස අනුව) ලෙස බෙදා හෝ අවස්ථා අඩු වේලාවල (off‑peak hours) ක්රියාත්මක කිරීම සලස්වන්න.
UPDATE logs
SET message = REPLACE(message, 'error', 'info')
WHERE id BETWEEN 1 AND 10000;
පියවරෙන් පියවර ක්රියාත්මක කිරීම සේවාදායක භාරය බෙදා හරිනු ඇත.
කාර්ය සාධනය සහ ආරක්ෂාව සලකා බැලීමෙන්, කාර්ය සාධන කාර්යක්ෂමතාවය සහ ගැටළු වැළැක්වීම දෙකම ඔබට ලබා ගත හැක.
නඩු අධ්යයනය: වාස්තුකාලීන භාවිත උදාහරණ
ඉදිරිපත් කරන්නේ “ස්ට්රින් මාරු කිරීම” සම්බන්ධ දෙකක් ප්රායෝගික උදාහරණයයි, එම උදාහරණ දෙකම නිතර නඩත්තු හා දත්ත කළමනාකරණයේ සිදුවේ. අපි වැඩපිළිවෙළ සහ අවධානම්, සත්ය SQL ප්රකාශන සමඟ පැහැදිලි කරමු.
නඩු 1: නිෂ්පාදන විස්තරවල URL බල්ක් යාවත්කාලීන කිරීම
මෙම නඩුව e‑commerce අඩවියක් සම්බන්ධයි; අඩවිය නවීකරණය කිරීමෙන් පසු, සියලු නිෂ්පාදන විස්තරවල පරණ URL (old-shop.com) නව URL (new-shop.jp) වෙත මාරු කිරීමට අවශ්ය වේ.
උදාහරණ පියවරයන්:
productsවගුවේ බැකප් එක ගන්න.- WHERE වාක්යයක් භාවිතා කර ඉලක්ක පේළි සීමා කරන්න (පරීක්ෂණ ධාවන සලස්වන්න).
- බල්ක් නිවැරදි කිරීම සඳහා UPDATE ප්රකාශනය ක්රියාත්මක කරන්න.
සැබෑ SQL උදාහරණය:
UPDATE products
SET description = REPLACE(description, 'old-shop.com', 'new-shop.jp');
අවධානම්:
- නිෂ්පාදනයට අයදුම් කිරීමට පෙර පරීක්ෂණ පරිසරයක සම්පූර්ණයෙන්ම පිටපත් ගත කර සහ තහවුරු කරගන්න
- URL එක අවට ඉඩකඩ හෝ නව පේළි තිබිය හැකි නම්, regex ප්රතිස්ථාපනය (REGEXP_REPLACE) ගැන සලකා බලන්න
කේස් 2: ගනුදෙනුකරුවන්ගේ දත්ත ආකෘති සම්මත කිරීම
ස්ට්රින් ප්රතිස්ථාපනය ගනුදෙනුකරුවන්ගේ දත්ත ගබඩා වල දුරකථන අංක සහ තැපැල් කේත වැනි ආකෘති සම්මත කිරීම සඳහාද ප්රයෝජනවත් වේ. උදාහරණයක් ලෙස, සියලු දුරකථන අංක වලින් හයිෆන් ඉවත් කර ඒවා අඛණ්ඩ අංක ලෙස පරිවර්තනය කිරීම:
සැබෑ SQL උදාහරණය:
UPDATE customers
SET tel = REPLACE(tel, '-', '');
ඔබ MySQL 8.0 හෝ ඊට පසු සංස්කරණයක් භාවිතා කරන්නේ නම්, වඩාත් සවිස්තරාත්මක ආකෘති සැකසීම් සඳහා regex භාවිතා කළ හැක.
Regex උදාහරණය (තැපැල් කේත “123-4567” ලෙස සම්මත කිරීම):
UPDATE customers
SET zipcode = REGEXP_REPLACE(zipcode, '([0-9]{3})-?([0-9]{4})', '\1-\2');
අවධානම්:
- නිෂ්පාදන දත්ත වල වෙනස්කම් අයදුම් කිරීමට පෙර ප්රතිඵල අපේක්ෂිත ලෙස ඇති බව තහවුරු කරන්න
- බලපෑම විශාල නම්, WHERE වාක්යය භාවිතා කර පියවරෙන් පියවර යාවත්කාලීන පරාසය සීමා කරන්න
මෙම කේස් අධ්යයන වල පෙන්වා ඇති පරිදි, MySQL ස්ට්රින් ප්රතිස්ථාපනය විශාල පරිමාණ නඩත්තු සහ නිතර දත්ත පිරිසිදු කිරීම සඳහා ඉතා ප්රයෝජනවත් වේ. නිතර පිටපත් ගත කර සහ පෙර තහවුරු කිරීමෙන්, ඔබට දෝෂ සහ ගැටළු වැළැක්විය හැක.
සාරාංශය සහ වැඩ පරීක්ෂා ලැයිස්තුව
මෙතෙක්, MySQL හි ස්ට්රින් ප්රතිස්ථාපනය කෙරෙහි — මූලික සිට උසස් තාක්ෂණ සහ වාස්තුක උදාහරණ දක්වා — අපි ආවරණය කර ඇත. අවසානයේ, ප්රධාන කරුණු සාරාංශ කරමින්, සැබෑ මෙහෙයුම් සිදු කරන විට ප්රයෝජනවත් වන පරීක්ෂා ලැයිස්තුවක් ලබා දෙමු.
ප්රධාන සාරාංශ
- REPLACE() සරල බහු-ස්ට්රින් ප්රතිස්ථාපනය සඳහා හොඳම වේ. එය case‑sensitive වන අතර නිරවද්ය ගැලපීම් වලට පමණක් ක්රියා කරයි.
- REGEXP_REPLACE() (MySQL 8.0+) නියමිත ප්රකාශන (regular expressions) භාවිතා කර උසස් රටා ප්රතිස්ථාපනය සක්රිය කරයි.
- UPDATE සමඟ බහු ප්රතිස්ථාපනය පහසුය, නමුත් පරීක්ෂණ පරිසරයක පිටපත් ගත කිරීම සහ තහවුරු කිරීම අත්යවශ්ය වේ.
- REPLACE() නස්ට් කිරීම (nesting) එකවර බහු රටා ප්රතිස්ථාපනය සඳහා ප්රයෝජනවත් වේ.
- විශාල දත්ත කට්ටල සැකසීමේදී කාර්ය සාධනය, ඉන්ඩෙක්ස් බලපෑම, සහ සේවාදායක භාරය පිළිබඳ අවධානයෙන් සිටින්න.
වැඩ පරීක්ෂා ලැයිස්තුව
- □ ඔබ ප්රතිස්ථාපනය කිරීමට රටාව සහ ඉලක්ක තීරුව(ය) නිවැරදිව හඳුනාගෙන තිබේද?
- □ WHERE වාක්යය භාවිතා කර අවශ්ය පේළි පමණක් යාවත්කාලීන කිරීමට සීමා කර තිබේද?
- □ නිෂ්පාදනයට වෙනස්කම් අයදුම් කිරීමට පෙර පිටපතක් ගෙන තිබේද?
- □ පරීක්ෂණ පරිසරයක් හෝ අතුරු දත්ත භාවිතා කර ප්රශ්න විමසුමේ හැසිරීම තහවුරු කර තිබේද?
- □ දත්ත ප්රමාණය සහ සේවාදායක භාරය අනුව බැච් සැකසීම හෝ LIMIT/ID පරාස භාවිතා කිරීමේ සැලැස්මක් ඔබට තිබේද?
- □ මෙහෙයුමෙන් පසු, ප්රතිස්ථාපන ප්රතිඵල අපේක්ෂිතව සමාන බව ඔබ සවිස්තරාත්මකව පරීක්ෂා කර තිබේද?
- □ ඔබගේ MySQL සංස්කරණය අනුව සුදුසු ක්රියාකාරකම තෝරාගෙන තිබේද?
මෙම පරීක්ෂා ලැයිස්තුව අනුගමනය කිරීමෙන්, ඔබ MySQL ස්ට්රින් ප්රතිස්ථාපනය ආරක්ෂිතව සහ විශ්වාසදායකව සිදු කළ හැක.
කුඩා දෝෂයක් පවා විශාල ගැටළු ඇති කරනු ඇති බැවින්, නිෂ්පාදනයට වෙනස්කම් අයදුම් කිරීමට පෙර සෑම පියවරක්ම සවිස්තරාත්මකව තහවුරු කරන්න.
FAQ (නිතර අසන ප්රශ්න)
මෙහිදී “MySQL ස්ට්රින් ප්රතිස්ථාපනය” පිළිබඳ සාමාන්ය ප්රශ්න සහ වාස්තුක සැලකිලි සාරාංශ කර ඇත. මෙම කොටස භාවිතා කර අසපසුකම අඩු කර, වැඩ කිරීමේ විශ්වාසය වැඩි කර ගන්න.
Q1. REPLACE() case‑sensitive ද?
A1: ඔව්. REPLACE() case‑sensitive වේ. උදාහරණයක් ලෙස, “mysql” සහ “MySQL” වෙනස් ස්ට්රින් ලෙස සැලකේ. ඔබට දෙකම ප්රතිස්ථාපනය කිරීමට අවශ්ය නම්, REPLACE() දෙවරක් නස්ට් (nest) කළ හැක හෝ වෙනත් ක්රමයක් භාවිතා කරන්න.
Q2. NULL අගයක් ඇති තීරුවකට එය භාවිතා කළහොත් කුමක් වේද?
A2: ඉලක්ක තීරුව NULL නම්, REPLACE() හි ප්රතිඵලයත් NULL වන අතර කිසිවක් වෙනස් නොවේ. NULL අගයන් පවතින තත්ත්වයෙහිද ප්රතිස්ථාපනය කිරීමට අවශ්ය නම්, IFNULL() සමඟ ඒකතු කරන්න.
Q3. එකවර බහු රටා ප්රතිස්ථාපනය කළ හැදුවද?
A3: ඔව්. ඔබට REPLACE() ඇමතුම් නස්ට් කර එක ප්රකාශනය තුළ බහු රටා ප්රතිස්ථාපනය කළ හැක. නමුත්, ප්රතිස්ථාපන ක්රමය අනුව ප්රතිඵල වෙනස් විය හැකි බැවින්, පෙර තහවුරු කිරීම අත්යවශ්ය වේ.
Q4. නියමිත ප්රකාශන (regular expressions) භාවිතා කර ප්රතිස්ථාපනය කෙසේ කළ හැකිද?
A4: REGEXP_REPLACE() භාවිතා කරන්න, එය MySQL 8.0 සහ ඊට පසු අනුවාද වල ලබා ගත හැක. ඔබ පැරණි අනුවාදයක් භාවිතා කරන්නේ නම්, යෙදුම්‑පාර්ශ්ව ප්රතිස්ථාපනය හෝ වෙනත් ක්රමයක් සලකා බලන්න.
Q5. REPLACE INTO වලින් වෙනස්කම කුමක්ද?
A5: REPLACE() යනු “string replacement” සඳහා වූ ක්රියාකාරකමක් වන අතර REPLACE INTO යනු INSERT‑වැනි SQL ප්රකාශයක් වන අතර “පවතින පේළිය මකා නව පේළිය එක් කරයි.” ඒවා සම්පූර්ණයෙන් වෙනස් අරමුණු සඳහා භාවිතා වේ.
Q6. ප්රතිස්ථාපනයෙන් පසු මුල් දත්ත නැවත ලබා ගත හැකිද? (ප්රතිසාධනය)
A6: බොහෝ අවස්ථාවල, ප්රතිස්ථාපනයෙන් පසු දත්ත පසුපසට ගෙන යාම අමාරු වේ. මෙහෙයුම ක්රියාත්මක කිරීමට පෙර සැමවිටම බැකප් එකක් ගන්න. යමක් වැරදි නම්, ඔබේ බැකප් එකෙන් ප්රතිස්ථාපනය කරන්න.
Q7. මගේ MySQL අනුවාදය කෙසේ පරීක්ෂා කරගත හැකිද?
A7: ඔබේ MySQL අනුවාදය පරීක්ෂා කිරීමට පහත ප්රශ්නය ක්රියාත්මක කරන්න:
SELECT VERSION();
REGEXP_REPLACE() වැනි ක්රියාකාරකම් ලබා ගත හැකිදැයි තහවුරු කිරීමට ඔබේ අනුවාදය පෙර පරීක්ෂා කරන්න.
මෙම FAQ භාවිතා කරමින් ඔබට string replacement මෙහෙයුම් විශ්වාසයෙන් ඉදිරියට ගෙන යා හැක.
සම්බන්ධිත සබැඳි සහ යොමුකිරීම්
string replacement හෝ SQL ඉගෙනීම ගැන ගැඹුරු අවබෝධයක් ලබා ගැනීමට, නිල ලේඛන සහ විශ්වාසනීය තාක්ෂණික සම්පත් භාවිතා කිරීම ප්රයෝජනවත් වේ. අපි සම්බන්ධිත ලිපි සහ ප්රයෝජනවත් මෙවලම්ද හඳුන්වා දෙමු—කරුණාකර ඒවා යොමුකිරීම් ලෙස භාවිතා කරන්න.
1. නිල MySQL ලේඛන
- MySQL :: MySQL 8.0 Reference Manual :: 12.8.2 String Functions MySQL string functions වල සම්පූර්ණ ලැයිස්තුවකි. මෙහිදී REPLACE() සහ REGEXP_REPLACE() සඳහා විස්තරාත්මක විශේෂණ සහ පරාමිතීන් තහවුරු කළ හැක.
2. REGEXP_REPLACE() ප්රායෝගික උදාහරණ
- Studying the regex functions added in MySQL 8 MySQL 8 හි එක්කළ regex ක්රියාකාරකම් අධ්යයනය කිරීම. MySQL 8.0 හි regex‑අධාරිත ප්රතිස්ථාපන ප්රායෝගික උදාහරණ බොහොමයක් ඇතුළත් වේ.
4. SQL මූලිකතා ඉගෙනීමට අවශ්ය නම්
- MySQL Basics (Beginner) – Dotinstall SQL මුල සිට ඉගෙනීමට අවශ්ය නම්, වීඩියෝ‑අධාරිත ඉගෙනුම් සම්පත්ද ප්රයෝජනවත් වේ.


