.
1. MySQL හි String Concatenation (ස්ට්රින් එකතු කිරීම) සමාලෝචනය
MySQL හි string concatenation යනු දත්ත ගබඩාව තුළ බහු ස්ට්රින් එකක් එකම අගයක් ලෙස එකතු කරන ක්රියාවලියයි. උදාහරණයක් ලෙස, දත්ත ගබඩාවෙන් පරිශීලකයකුගේ සම්පූර්ණ නාමය ලබා ගන්නා විට, අවසාන නාමය සහ පළමු නාමය එකතු කර එක සම්පූර්ණ නාමයක් ලෙස පෙන්විය හැක. MySQL හි string concatenation ප්රධාන වශයෙන් CONCAT ක්රියාවලිය සහ පයිප් (pipe) මෙහෙයුම්කරු (||) භාවිතා කර සිදු කරයි. මෙම ලිපියේදී අපි මෙම ක්රම දෙක විස්තරාත්මකව පැහැදිලි කර, ඒවා ප්රායෝගිකව භාවිතා කරන ආකාරය හඳුන්වා දෙමු.
1.1 String Concatenation (ස්ට්රින් එකතු කිරීම) වැදගත් වීමේ හේතු
දත්ත ගබඩා මෙහෙයුම් වල, string concatenation බොහෝ අවස්ථාවල අවශ්ය වේ. උදාහරණයක් ලෙස, පරිශීලක අතුරුමුහුණතේ පෙන්වන තොරතුරු එකතු කිරීම හෝ ලොග් දත්ත එකම ඇතුළත් කිරීම සඳහා භාවිතා වේ. කාර්යක්ෂම string concatenation පාලනය කිරීමෙන්, දත්ත ගබඩා මෙහෙයුම් කාර්ය සාධනය වැඩිදියුණු කර, ඔබේ කේතය කියවීමට පහසු කර ගත හැක.
2. CONCAT ක්රියාවලිය භාවිතා කරන ආකාරය
MySQL හි CONCAT ක්රියාවලිය බහු ස්ට්රින් එකතු කර එකම ස්ට්රින් එකක් නිර්මාණය කිරීමේ මූලික ක්රමයයි. මෙම කොටස තුළ, CONCAT ක්රියාවලිය කෙසේ භාවිතා කරනවාද, එහි ප්රධාන ලක්ෂණ මොනවාද යන්න නිරීක්ෂණය කරමු.
2.1 CONCAT මූලික කරුණු
CONCAT ක්රියාවලිය ලබා දෙන arguments (පරාමිතීන්) අනුව ස්ට්රින් එකතු කරයි. ව්යුහය (syntax) ඉතා සරල වන අතර, පහත පරිදි දැක්වේ.
SELECT CONCAT('Hello', ' ', 'World');
මෙම විමසුම “Hello World” ස්ට්රින් එක ජනනය කරයි. CONCAT සඳහා අවම වශයෙන් පරාමිතීන් දෙකක් අවශ්ය වේ, නමුත් අවශ්ය පරිදි පරාමිතීන් ගණනාවක් එකතු කළ හැක.
2.2 සංඛ්යා සහ NULL අගයන් සැකසීම
CONCAT ක්රියාවලියට සංඛ්යාවක් ලබා දුන් විට, එය ස්වයංක්රීයව ස්ට්රින් එකකට පරිවර්තනය වේ. උදාහරණයක් ලෙස, පහත විමසුම නිවැරදිව ක්රියා කරයි.
SELECT CONCAT('The number is ', 123);
කෙසේ වෙතත්, NULL අගයක් ඇතුළත් කර ඇත්නම්, සම්පූර්ණ ප්රතිඵලය NULL වේ.
SELECT CONCAT('Hello', NULL, 'World');
මෙම විමසුම NULL ආපසු ලබා දෙයි. මෙය CONCAT හි වැදගත් හැසිරීමකි, එබැවින් සැබෑ දත්ත සමඟ වැඩ කරන විට අවධානයෙන් සිටිය යුතුය.
2.3 ප්රායෝගික උදාහරණ
CONCAT ක්රියාවලිය සම්පූර්ණ නාම ජනනය, ලිපින ආකෘතිකරණය, පණිවුඩ ගොඩනැගීම වැනි බොහෝ අවස්ථාවල භාවිතා වේ. පහත දැක්වෙන්නේ සම්පූර්ණ නාමයක් එකතු කිරීමේ උදාහරණයකි.
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM users;
මෙම විමසුම users වගුවේ අවසාන නාමය සහ පළමු නාමය එකතු කර, ඒවා සම්පූර්ණ නාමයක් ලෙස පෙන්වයි.
3. Pipe Operator (||) භාවිතා කර String Concatenation
MySQL හි, ඔබට pipe operator (||) භාවිතා කරත් ස්ට්රින් එකතු කළ හැක. නමුත්, පෙරනිමි ලෙස || යනු තාර්කික OR ලෙස අර්ථ දක්වයි, එබැවින් විශේෂ සැකසීමක් අවශ්ය වේ.
3.1 Pipe Operator හි පෙරනිමි හැසිරීම
සාමාන්යයෙන්, || තාර්කික OR මෙහෙයුම්කරු ලෙස ක්රියා කරයි. නමුත් MySQL සැසිය (session) මාදිලිය (mode) වෙනස් කිරීමෙන්, එය ස්ට්රින් එකතු කිරීම සඳහා භාවිතා කළ හැක.
3.2 PIPES_AS_CONCAT මාදිලිය සක්රිය කිරීම
|| ක්රියාවලිය ස්ට්රින් එකතු කිරීම සඳහා භාවිතා කිරීමට, සැසියේ මාදිලිය වෙනස් කිරීම සඳහා පහත කමාන්ඩ් ක්රියාත්මක කරන්න.
SET @@session.sql_mode = 'PIPES_AS_CONCAT';
මෙම සැකසීම සක්රිය කිරීමෙන් පසු, ඔබට || භාවිතා කර ස්ට්රින් එකතු කළ හැක, උදාහරණයක් ලෙස:
SELECT 'Hello' || ' ' || 'World';
මෙම විමසුම “Hello World” ආපසු ලබා දෙයි.
3.3 සැසියන් අතර සැකසීම රැක ගැනීම
සෑම සැසියක්ම මෙම සැකසීම කර ගැනීම අමාරු නම්, MySQL වින්යාස ගොනුව (my.cnf හෝ my.ini) තුළ පහත පේළිය එක් කර, සේවාදායකය නැවත ආරම්භ කළ පසුද එය සක්රියව පවතී.
[mysqld]
sql_mode = 'PIPES_AS_CONCAT'
4. CONCAT සහ Pipe Operator (||) අතර සංසන්දනය
ඔබට CONCAT භාවිතා කළ යුතුද, නැතහොත් pipe operator භාවිතා කළ යුතුද යන ප්රශ්නයක් ඇති විය හැක. මෙහිදී, එක් එක් ක්රමයේ වාසි හා අවාසි සසඳා බලමු.
4.1 කියවීමේ පහසුව සහ කේත පැහැදිළිත්වය
CONCAT භාවිතා කරන විට, එය පැහැදිලි ක්රියාකාරකමක් (function call) වන බැවින් කේතය කුමක් කරන්නේද යන්න තේරුම් ගැනීමට පහසුය. අනෙක් පැත්තේ, pipe operator සරල හා කෙටි පෙනුමක් දක්වයි, නමුත් එය වින්යාස සැකසීමක් අවශ්ය කරන බැවින්, කේතය වෙනත් දත්ත ගබඩා පද්ධති වෙත මාරු කරන විට අවධානයෙන් සිටිය යුතුය.
4.2 කාර්ය සාධන වෙනස්කම්
final answer.බොහෝ අවස්ථාවල, CONCAT සහ පයිප් මෙහෙයුම අතර කාර්ය සාධන වෙනස අඩුය. එහෙත්, ඔබ විශාල ප්රමාණයේ දත්ත සැකසීම හෝ ඉතා頻繁ව ස්ට්රින්ග් එකතු කිරීම කරන්නේ නම්, කුමන ක්රමය වඩා කාර්යක්ෂමදැයි ඇගයීම වටිනවා.
4.3 නිවැරදි විකල්පය තෝරා ගැනීම
හොඳම තේරීම ඔබේ ව්යාපෘති අවශ්යතා සහ ඔබේ කණ්ඩායමේ කේත ලේඛන ශෛලිය මත පදනම් වේ. ඔබ සරලත්වය සහ අනුකූලතාවය ප්රමුඛ කරන්නේ නම්, CONCAT නිර්දේශ කරයි. ඔබ කියවීමට පහසුකම සහ කෙටි කේතය ප්රමුඛ කරන්නේ නම්, පයිප් මෙහෙයුම භාවිතා කිරීම හොඳ විකල්පයක් විය හැක.
5. පොදු දෝෂ සහ හොඳ පුරුදු
මෙම කොටස MySQL හි ස්ට්රින්ග් එකතු කිරීමේදී සිදුවන පොදු දෝෂ සහ ඒවා වැලැක්වීමට හොඳ පුරුදු පිළිබඳව හඳුන්වා දෙයි.
5.1 NULL අගයන් පිළිබඳ සටහන්
පෙර සඳහන් කළ පරිදි, CONCAT තුළ NULL ඇතුළත් කරන්නේ නම්, සම්පූර්ණ ප්රතිඵලය NULL වේ. මෙය වැලැක්වීමට, NULL හි ස්ථානය හිස් ස්ට්රින්ග් එකක් සමඟ ප්රතිස්ථාපනය කිරීමට IFNULL ක්රියාවලිය භාවිතා කළ හැක.
SELECT CONCAT(IFNULL(first_name, ''), ' ', IFNULL(last_name, '')) AS full_name FROM users;
5.2 අනුකූලතාවය සහතික කිරීම
PIPES_AS_CONCAT ප්රකාරය MySQL-විශේෂාංගයක් වන අතර අනෙකුත් දත්ත ගබඩා වල ක්රියා නොකළ හැකිය. ගමන් කළ හැකි බව වැදගත් නම්, ප්රමිතිය CONCAT ක්රියාවලිය භාවිතා කිරීම නිර්දේශ කරයි.
5.3 වෙන්කාරක-අධාරිත එකතු කිරීම සඳහා CONCAT_WS භාවිතා කරන්න
ඔබට විශේෂිත වෙන්කාරකයක් භාවිතා කර බහු ස්ට්රින්ග් එකතු කිරීමට අවශ්ය නම්, CONCAT_WS (With Separator) ක්රියාවලිය ඉතා ප්රයෝජනවත් වේ.
SELECT CONCAT_WS(',', 'apple', 'banana', 'cherry');
මෙම විමසුම “apple,banana,cherry” යන ප්රතිඵලය ලබා දෙයි.
6. සාරාංශය
මෙම ලිපියේ, MySQL හි ස්ට්රින්ග් එකතු කිරීම පිළිබඳව, CONCAT ක්රියාවලිය සහ පයිප් මෙහෙයුම භාවිතා කිරීම මත අවධානය යොමු කරමින් පැහැදිලි කළෙමු. සෑම ක්රමයකටම තමන්ගේ වාසි සහ වැදගත් සැලකිලි තිබේ, එබැවින් ඔබේ ව්යාපෘති අවශ්යතා මත හොඳම ක්රමය තෝරන්න.
මෙම දැනුම යොදාගෙන, ඔබට වඩා කාර්යක්ෂම සහ කියවීමට පහසු SQL විමසුම් ලියන්න පුළුවන්, එමඟින් දත්ත ගබඩා මෙහෙයුම් කාර්ය සාධනය වැඩිදියුණු කරගත හැක.



