MySQL REPLACE ක්‍රියාකාරකම මාර්ගෝපදේශය: විමසුම් සහ යාවත්කාලීනවල ස්ට්‍රින්ග්ස් ප්‍රතිස්ථාපනය

目次

1. හැඳින්වීම

හැඳින්වීම

දත්ත ගබඩා කළමනාකරණයේ, ඔබේ දත්ත වල කොටසක් ප්‍රතිස්ථාපනය කිරීම අවශ්‍ය වන අවස්ථා බොහොමයක් වේ. උදාහරණයක් ලෙස, නිශ්චිත ස්ට්‍රින් එකක් නව එකක් සමඟ ප්‍රතිස්ථාපනය කිරීමේ අවශ්‍යතාවය (උදා: නිෂ්පාදන නාම වෙනස් කිරීම, ලිපින යාවත්කාලීන කිරීම) බොහෝ වෙලාවට සිදුවේ. MySQL හි REPLACE ක්‍රියාවලිය භාවිතා කරමින්, මෙම ප්‍රතිස්ථාපන කාර්යයන් කාර්යක්ෂමව සිදු කළ හැක. මෙම ලිපියේදී, REPLACE ක්‍රියාවලියේ මූලික භාවිතය සිට උසස් පරිභෝගය දක්වා සියල්ල විස්තර කරමු.

මෙම ලිපියේ අරමුණ

මෙම ලිපියේ අරමුණ වන්නේ MySQL හි REPLACE ක්‍රියාවලියේ මූලික භාවිතය ඉගෙන ගැනීමට සහ එය සැබෑ දත්ත ගබඩා මෙහෙයුම් වල යොදා ගැනීමට උපකාර කිරීමයි. මෙම ලිපිය මගින්, ඔබට සරල ස්ට්‍රින් ප්‍රතිස්ථාපනයන් සිට බහු ප්‍රතිස්ථාපනයන් දක්වා විවිධ REPLACE භාවිතා අවස්ථා අවබෝධ කරගත හැක.

2. REPLACE ක්‍රියාවලියේ මූලික භාවිතය

REPLACE ව්‍යුහය සහ විස්තරය

REPLACE ක්‍රියාවලිය යනු, දී ඇති ස්ට්‍රින් එකක නිර್ದිෂ්ට උපස්ට්‍රින් එක නව ස්ට්‍රින් එකක් සමඟ ප්‍රතිස්ථාපනය කිරීම සඳහා භාවිතා වේ. ව්‍යුහය පහත පරිදි වේ.

REPLACE(str, from_str, to_str)
  • str : සැකසීමට ඇති මුල් ස්ට්‍රින්.
  • from_str : ඔබ ප්‍රතිස්ථාපනය කිරීමට අවශ්‍ය උපස්ට්‍රින්.
  • to_str : එය ප්‍රතිස්ථාපනය කරනු ලබන නව උපස්ට්‍රින්.

මෙම ක්‍රියාවලිය str තුළ ඇති from_str සියලු සිදුවීම් to_str සමඟ ප්‍රතිස්ථාපනය කරයි. වැදගත් කරුණක් නම්, මෙම ප්‍රතිස්ථාපනය අකුරු-කේස් සංවේදී (case‑sensitive) වේ.

මූලික උදාහරණය

උදාහරණයක් ලෙස, “Java” ස්ට්‍රින් එක “JAVA” ලෙස ප්‍රතිස්ථාපනය කිරීමට, පහත පරිදි REPLACE ක්‍රියාවලිය භාවිතා කළ හැක.

SELECT REPLACE('Java and JavaScript is good', 'Java', 'JAVA');

ප්‍රතිඵලය “JAVA and JavaScript is good” ලෙස ලැබේ. REPLACE ක්‍රියාවලිය from_str සොයා, නියමිත ස්ට්‍රින් එක තුළ to_str සමඟ ප්‍රතිස්ථාපනය කරයි.

අකුරු‑කේස් සංවේදී හැසිරීම

REPLACE ක්‍රියාවලිය අකුරු‑කේස් සංවේදී බැවින්, “Java” සහ “java” වෙනස් ස්ට්‍රින් ලෙස සැලකේ. පහත විමසුමේදී, “AaA” පමණක් “REPLACE” ලෙස ප්‍රතිස්ථාපනය වේ.

SELECT REPLACE('aaa AaA aAa aaA', 'AaA', 'REPLACE');

මෙහිදී “aaa” සහ “aAa” වෙනස් නොවී, “AaA” පමණක් ප්‍රතිස්ථාපනය වේ. මෙම හැසිරීම අවබෝධ කර ගැනීම REPLACE ක්‍රියාවලිය භාවිතා කරන විට වැදගත් වේ.

3. ප්‍රායෝගික උදාහරණ: එකම ස්ට්‍රින් ප්‍රතිස්ථාපනය

උදාහරණ 1: සරල ස්ට්‍රින් ප්‍රතිස්ථාපනය

නිෂ්පාදන නාමයේ “old product” ස්ට්‍රින් එක “new product” ලෙස ප්‍රතිස්ථාපනය කිරීමට, පහත පරිදි REPLACE ක්‍රියාවලිය භාවිතා කරන්න.

SELECT REPLACE('This is an old product', 'old product', 'new product');

මෙම විමසුම ක්‍රියාත්මක කළ විට “This is a new product” ලෙස ප්‍රතිඵලය ලැබේ. REPLACE ක්‍රියාවලිය නියමිත ස්ට්‍රින් එක තුළ from_str සියලු සිදුවීම් to_str සමඟ ප්‍රතිස්ථාපනය කරයි.

උදාහරණ 2: බහු-බයිට් අක්ෂර ප්‍රතිස්ථාපනය

REPLACE ක්‍රියාවලිය ජපන් භාෂාව වැනි බහු-බයිට් අක්ෂරද සහය දක්වයි. පහත විමසුම ජපන් ස්ට්‍රින් එකේ කොටසක් ප්‍රතිස්ථාපනය කරයි.

SELECT REPLACE('This is Minato City', 'Minato City', 'Chuo City');

මෙය ක්‍රියාත්මක කළ විට “This is Chuo City” ලෙස ප්‍රතිඵලය ලැබේ. බහු-බයිට් අක්ෂර සමඟද REPLACE ක්‍රියාවලිය නිවැරදිව ක්‍රියා කරයි.

4. එකවර බහු ස්ට්‍රින් ප්‍රතිස්ථාපනය කිරීමේ ක්‍රමය

අන්තර REPLACE ක්‍රියාවලි

එකවර බහු ස්ට්‍රින් ප්‍රතිස්ථාපනය කිරීමට REPLACE ක්‍රියාවලි අන්තරගත (nest) කළ හැක. උදාහරණයක් ලෙස, “One” → “1”, “Two” → “2”, “Three” → “3” ලෙස ප්‍රතිස්ථාපනය කිරීමට පහත පරිදි විමසුම ලියන්න.

UPDATE t_test SET emp = REPLACE(REPLACE(REPLACE(emp, 'One', '1'), 'Two', '2'), 'Three', '3');

අන්තරගත REPLACE ක්‍රියාවලි එකම මෙහෙයුමක බහු ප්‍රතිස්ථාපනය සිදු කිරීමට පහසු ක්‍රමයක් වේ. නමුත් අන්තරගත ගැඹුර වැඩි වීමෙන් විමසුම කියවීමට අමාරු විය හැක. සංකීර්ණ ප්‍රතිස්ථාපන අවශ්‍යතා සඳහා වෙනත් ක්‍රමද සලකා බලන්න.

CASE ප්‍රකාශයක් භාවිතා කිරීම

බහු කොන්දේසි මත ස්ට්‍රින් ප්‍රතිස්ථාපනය කිරීමට CASE ප්‍රකාශයක් භාවිතා කළ හැක. මෙම ක්‍රමය කියවීමට පහසු වන අතර, කොන්දේසිය අනුව වඩාත් ස flexibil​e ප්‍රතිස්ථාපන ලබා දේ.

.UPDATE t_test SET emp = CASE WHEN emp LIKE '%One' THEN REPLACE(emp,'One','1') WHEN emp LIKE '%Two' THEN REPLACE(emp,'Two','2') WHEN emp LIKE '%Three' THEN REPLACE(emp,'Three','3') ELSE emp END;

CASE ප්‍රකාශනය එකම ප්‍රකාශයක බහු කොන්දේසි මත පදනම්ව ප්‍රතිස්ථාපන කිරීමට ප්‍රයෝජනවත් වන අතර, විශේෂිත රටා වලට ගැළපෙන දත්ත ප්‍රතිස්ථාපනය කිරීමට අවශ්‍ය වන විට උපකාරී වේ.

5. කාර්ය සාධනය සහ හොඳ පුරුදු

කාර්ය සාධනයට බලපෑම

විශාල දත්ත කට්ටලයන් මත REPLACE ක්‍රියාකාරකම භාවිතා කරන විට, විමසුම් ක්‍රියාත්මක කාලය වැඩි විය හැක. විශේෂයෙන්, සම්පූර්ණ වගුවක රෙකෝඩ් ගණනාවක් මත අක්ෂර ශ්‍රේණි ප්‍රතිස්ථාපනය කරන විට, ක්‍රියාත්මක කාලය සහ කාර්ය සාධන බලපෑම ගැන සැලකිල්ලට ගත යුතුය. මෙහෙයුම උපරිම කර ගැනීමට පහත කරුණු මත අවධානය යොමු කරන්න.

  • ඉන්ඩෙක්ස් භාවිතා කරන්න : සෙවීම සහ ප්‍රතිස්ථාපනයේ වේගය වැඩි කිරීමට අවශ්‍ය විට ඉන්ඩෙක්ස් සාදන්න.
  • කොටස් ලෙස ක්‍රියාත්මක කරන්න : ඔබට විශාල ප්‍රමාණයේ දත්ත ප්‍රතිස්ථාපනය කිරීමට අවශ්‍ය නම්, සියලු රෙකෝඩ් එකවර සැකසීමෙන් වැළකී සිටින්න. මෙහෙයුම කොටස් කිහිපයක් ලෙස ක්‍රියාත්මක කිරීම දත්ත ගබඩාවේ පූර්ණභාරය අඩු කරයි.

නිර්දේශිත හොඳ පුරුදු

REPLACE ක්‍රියාකාරකම භාවිතා කරන විට, මෙම හොඳ පුරුදු අනුගමනය කිරීම ඔබට දත්ත කාර්යක්ෂමව සහ ආරක්ෂිතව හසුරවීමට උපකාරී වේ.

  • ආපසු ගබඩා කිරීමක් සාදන්න : විශාල පරිමාණ ප්‍රතිස්ථාපනයක් කිරීමට පෙර, දත්ත ගබඩාවේ සම්පූර්ණ ආපසු ගබඩාවක් සාදන්න.
  • පළමුව පරීක්ෂා කරන්න : නිෂ්පාදන පරිසරයේ විමසුම ක්‍රියාත්මක කිරීමට පෙර, එය පරික්ෂා පරිසරයක් හෝ පරීක්ෂණ පරිසරයක් තුළ පරීක්ෂා කර ඔබට අවශ්‍ය ප්‍රතිඵල ලැබෙන බව තහවුරු කරන්න.
  • WHERE වාක්‍යයක් භාවිතා කරන්න : මෙහෙයුම විශේෂිත රෙකෝඩ් වලට සීමා කිරීමට සහ ඔබට අවශ්‍ය දත්ත පමණක් ඉලක්ක කිරීමට WHERE වාක්‍යයක් භාවිතා කරන්න.

6. සටහන් සහ පොදු දෝෂ

අකුරු-කේස් සංවේදන ගැටළු

REPLACE ක්‍රියාකාරකම අකුරු-කේස් සංවේදන (case‑sensitive) වන බැවින්, ඔබට අපේක්ෂිත ප්‍රතිඵල නොලැබිය හැක. උදාහරණයක් ලෙස, “Java” සහ “java” වෙනස් අක්ෂර ශ්‍රේණි ලෙස සැලකේ, එබැවින් දෙකම ප්‍රතිස්ථාපනය කිරීමට ඔබට වෙනම REPLACE ඇමතුම් භාවිතා කළ යුතුය. අකුරු-කේස් සංවේදන ගැටළු වලින් වැළැක්වීමට, REPLACE ක්‍රියාකාරකම LOWER හෝ UPPER සමඟ එකතු කර පෙර අක්ෂර ශ්‍රේණිය කුඩා හෝ ලොකු අකුරට පරිවර්තනය කර ප්‍රතිස්ථාපනය කිරීමට හැකියාව ඇත.

අනෙකුත් ක්‍රියාකාරකම් සමඟ එකතු කිරීම

ඔබට REPLACE ක්‍රියාකාරකම අනෙකුත් අක්ෂර ශ්‍රේණි සැකසීමේ ක්‍රියාකාරකම් සමඟ එකතු කළ හැක. කෙසේ වෙතත්, ඒවා එකට භාවිතා කරන විට එක් එක් ක්‍රියාකාරකම කෙසේ හැසිරෙයිදැයි සම්පූර්ණයෙන් අවබෝධ කරගත යුතුය. උදාහරණයක් ලෙස, REPLACE ක්‍රියාකාරකම CONCAT හෝ SUBSTRING සමඟ එකතු කිරීම අනපේක්ෂිත ප්‍රතිඵල ලබා දිය හැක, එබැවින් ඔබේ විමසුම ක්‍රියාත්මක කිරීමට පෙර එහි හැසිරීම තහවුරු කරගන්න.

පොදු දෝෂ සහ ගැටළු විසඳීම

REPLACE ක්‍රියාකාරකම භාවිතා කරන විට සාමාන්‍ය ගැටළු අතර, ඉලක්ක අක්ෂර ශ්‍රේණිය සොයාගත නොහැකි වීම, හෝ අනිච්චිතව අක්ෂර ශ්‍රේණියේ කොටස් ප්‍රතිස්ථාපනය වීම ඇතුළත් වේ. මෙම ගැටළු වලින් වැළැක්වීමට, ඔබ වැඩ කරන දත්ත සහ අක්ෂර ශ්‍රේණි පෙර පරීක්ෂා කර, අවශ්‍ය නම් ආපසු ගබඩාවක් සාදන්න. එසේම, විමසුම පරීක්ෂණ පරිසරයක පළමුව ක්‍රියාත්මක කර එය අදහස් කරන පරිදි ක්‍රියා කරන බව තහවුරු කරගන්න.

7. සාරාංශය

REPLACE ක්‍රියාකාරකම MySQL හි අක්ෂර ශ්‍රේණි සැකසීම සඳහා ඉතා ප්‍රයෝජනවත් සහ බලවත් මෙවලමකි. මූලික භාවිතයෙන් පටන් ගනිමින් එකවර බහු අක්ෂර ශ්‍රේණි ප්‍රතිස්ථාපනයේ ක්‍රමවලට දක්වා, එය විවිධ මෙහෙයුම් සඳහා සහය දක්වා දත්ත ගබඩාවේ කාර්යක්ෂම කළමනාකරණයට දායක වේ. කෙසේ වෙතත්, අකුරු-කේස් සංවේදනය, කාර්ය සාධන බලපෑම, සහ අනෙකුත් ක්‍රියාකාරකම් සමඟ එකතු කිරීමේදී එය කෙසේ හැසිරෙයිදැයි අවධානයෙන් නිරීක්ෂණය කළ යුතුය.

REPLACE ක්‍රියාකාරකම නිසි ලෙස භාවිතා කිරීමෙන්, දත්ත ගබඩාවේ මෙහෙයුම් කාර්යක්ෂමතාව වැඩි කර, දත්ත සමගිත්වය සහ අඛණ්ඩතාව රැකගත හැක. මෙම ලිපියේ හඳුන්වා දී ඇති තාක්ෂණයන් භාවිතා කර MySQL අක්ෂර ශ්‍රේණි සැකසීම වැඩි කාර්යක්ෂමතාවෙන් සිදු කරන්න.

8. සම්බන්ධිත තොරතුරු

අනෙකුත් අක්ෂර ශ්‍රේණි ක්‍රියාකාරකම්

REPLACE ක්‍රියාකාරකම සමඟ එකට භාවිතා කළ හැකි අනෙකුත් අක්ෂර ශ්‍රේණි සැකසීමේ ක්‍රියාකාරකම් කිහිපයක් මෙහි ඇත.

. CONCAT : බහු ස්ට්‍රින්ග් එකතු කරයි. REPLACE ක්‍රියාවලියෙන් පසු අතිරේක පෙළ එකතු කිරීමට ඔබට අවශ්‍ය වන විට මෙය ප්‍රයෝජනවත් වේ.
SUBSTRING : ස්ට්‍රින්ග් එකක කොටසක් ලබා ගනී. REPLACE සමඟ ඒකතු කර, විශේෂිත උපස්ට්‍රින්ග් සංශෝධනය හෝ ඉවත් කිරීම සිදු කළ හැක.
TRIM* : ස්ට්‍රින්ග් එකේ ආරම්භය සහ අවසානයේ අතිරේක ඉඩ ඉවත් කරයි. REPLACE භාවිතා කිරීමට පෙර අවශ්‍ය නොවන හිස් ඉඩ පිරිසිදු කිරීමට මෙය උපකාරී වේ.

සම්බන්ධ ලිපි සඳහා සබැඳුම්

REPLACE ක්‍රියාවලියට අමතරව, MySQL ස්ට්‍රින්ග් සැකසීම ඉගෙන ගැනීමට පහත ලිපිද උපකාරී වේ.

මෙම සම්පත් වෙත යොමු වීමෙන්, ඔබේ MySQL ස්ට්‍රින්ග් සැකසීමේ කුසලතා තවත් වැඩිදියුණු කරගත හැක.

FAQ: MySQL REPLACE() ක්‍රියාවලිය

Q1. MySQL REPLACE() ක්‍රියාවලිය කුමක් කරයි?

MySQL REPLACE() යනු ස්ට්‍රින්ග් එකක් තුළ නියමිත උපස්ට්‍රින්ග් සියලුම සිදුවීම් වෙනත් උපස්ට්‍රින්ග් එකක් සමඟ ප්‍රතිස්ථාපනය කරයි. මෙය නිෂ්පාදන නාම, ලිපින, ලේබල් වැනි පෙළ දත්ත පිරිසිදු කිරීම හෝ යාවත්කාලීන කිරීම සඳහා සාමාන්‍යයෙන් භාවිතා වේ.

Q2. MySQL REPLACE() අකුරු-විශේෂ සංවේදීද?

ඔව්. REPLACE() අකුරු-විශේෂ (case‑sensitive) වේ, එනම් 'Java' සහ 'java' වෙනස් ස්ට්‍රින්ග් ලෙස සැලකේ. අකුරු-අවිශේෂ (case‑insensitive) ප්‍රතිස්ථාපනයක් අවශ්‍ය නම්, REPLACE() යෙදීමට පෙර LOWER() හෝ UPPER() භාවිතා කර ස්ට්‍රින්ග් පරිවර්තනය කිරීම සලකා බලන්න.

Q3. REPLACE() පළමු ගැලපීම පමණක් ප්‍රතිස්ථාපනය කරද?

නැත. REPLACE() සියලු ගැලපීම් ප්‍රතිස්ථාපනය කරයි.

Q4. ප්‍රතිස්ථාපනය කිරීමට අවශ්‍ය උපස්ට්‍රින්ග් නොමැති නම් කුමක් වේ?

ඉලක්ක උපස්ට්‍රින්ග් ස්ට්‍රින්ග් තුළ නොමැති නම්, REPLACE() මුල් ස්ට්‍රින්ග් එකම වෙනස් නොකර ආපසු ලබා දෙයි.

Q5. UPDATE ප්‍රකාශයේ REPLACE() භාවිතා කළ හැද?

ඔව්. REPLACE() බොහෝවිට UPDATE ප්‍රකාශයන්හි වගුවේ ගබඩා කර ඇති පෙළ අගයන් සංශෝධනය කිරීමට භාවිතා වේ. විශාල යාවත්කාලීන සඳහා, පළමුව පරීක්ෂා කර, WHERE කොන්දේසියක් භාවිතා කර පේළි සීමා කිරීම සුදුසුය.

Q6. එකවර බහු විවිධ ස්ට්‍රින්ග් ප්‍රතිස්ථාපනය කරන්නේ කෙසේද?

REPLACE(REPLACE(...), ...) ලෙස REPLACE() ඇමතුම් අන්‍යෝන්‍යව ගොඩනැගීමෙන් බහු ස්ට්‍රින්ග් ප්‍රතිස්ථාපනය කළ හැක. වෙනත් ක්‍රමයක් ලෙස, ප්‍රතිස්ථාපන අවශ්‍යතා කොන්දේසි මත පදනම් වූ විට CASE ප්‍රකාශයක් භාවිතා කළ හැක.

Q7. REPLACE() ජපන් භාෂාව හෝ අනෙකුත් බහු-බයිට් අක්ෂර සමඟ ක්‍රියා කරද?

ඔව්. REPLACE() ජපන් භාෂාව ඇතුළු බහු-බයිට් අක්ෂර සමඟ නිවැරදිව ක්‍රියා කරයි, ඔබේ දත්ත ගබඩා/වගුව/සම්බන්ධතා අක්ෂර සමුදාය (සාමාන්‍යයෙන් utf8mb4) නිසි ලෙස සකසා ඇති විට.

Q8. REPLACE() භාවිතා කිරීමේදී කාර්යක්ෂමතා අවදානමක් තිබේද?

ඔව්. විශාල දත්ත කට්ටල (විශේෂයෙන් බොහෝ පේළි) මත REPLACE() ක්‍රියාත්මක කිරීම මන්දගාමී විය හැකි අතර දත්ත ගබඩා භාරය වැඩි කරයි. වැඩි කාර්යක්ෂමතාව සඳහා, යාවත්කාලීන කාර්යයන් කුඩා කණ්ඩායම්වලට බෙදා, පූර්ව පරිසරයක පරීක්ෂා කර, WHERE කොන්දේසියෙන් පෙරහන් කිරීම සුදුසුය.

Q9. නිෂ්පාදන පරිසරයේ විශාල REPLACE() යාවත්කාලීනය ආරක්ෂිතව ක්‍රියාත්මක කිරීමේ ක්‍රමය කුමක්ද?

විශාල ප්‍රතිස්ථාපනයක් ක්‍රියාත්මක කිරීමට පෙර, සම්පූර්ණ බැකප් එකක් ගන්න, නො‑නිෂ්පාදන පරිසරයේ ප්‍රශ්නය පරීක්ෂා කරන්න, සහ යාවත්කාලීනය කුඩා කණ්ඩායම්වලට බෙදා ක්‍රියාත්මක කිරීම සලස්වන්න. SELECT ප්‍රතිඵල මඟින් බලපෑම් ලැබෙන පේළි පූර්වදර්ශනය කර, අවශ්‍ය නම් තහවුරු කරගන්න.

Q10. REPLACE() සහ REGEXP_REPLACE() අතර වෙනස කුමක්ද?

REPLACE() සරල උපස්ට්‍රින්ග් ප්‍රතිස්ථාපනයක් කරයි. රෙගුලාර් එක්ස්ප්‍රෙෂන් (regular expression) පදනම් වූ පේටර්න් ප්‍රතිස්ථාපනය අවශ්‍ය නම්, නවතම MySQL අනුවාදවල ලබා ගත හැකි REGEXP_REPLACE() භාවිතා කරන්න.