MySQL SUBSTRING() පැහැදිලි කිරීම: උදාහරණ සමඟ ස්ට්‍රින්ග් එකක කොටස් ලබා ගැනීම

.

目次

1. SUBSTRING ක්‍රියාවලිය කුමක්ද?

SUBSTRING ක්‍රියාවලිය යනු, ස්ට්‍රින්ග් එකකින් උපස්ට්‍රින්ග් එකක් ලබා ගැනීමට භාවිතා කරන වැදගත් MySQL ක්‍රියාවලියකි. මෙම ක්‍රියාවලිය මඟින් දත්ත ගබඩාවක සුරැකි දත්ත වලින් ඔබට අවශ්‍ය කොටස පමණක් ලබා ගත හැක. උදාහරණයක් ලෙස, පරිශීලකයකුගේ ඊමේල් ලිපිනයේ ඩොමේන් කොටස ලබා ගැනීමට හෝ නිෂ්පාදන කේතයකින් විශේෂ කොටස ලබා ගැනීමට මෙය ප්‍රයෝජනවත් වේ.

1.1 මූලික ව්‍යවස්ථාව

SUBSTRING ක්‍රියාවලියේ මූලික ව්‍යවස්ථාව පහත පරිදි වේ:

SUBSTRING(str, pos)
SUBSTRING(str, pos, len)
  • str : ලබා ගැනීමට අවශ්‍ය ස්ට්‍රින්ග්.
  • pos : ආරම්භක ස්ථානය (1 සිට ආරම්භ වේ).
  • len : ලබා ගැනීමට අවශ්‍ය අක්ෂර ගණන (විකල්ප).

pos ධනාත්මක අගයක් නම්, MySQL ස්ට්‍රින්ග් එකේ ආරම්භය සිට ඉදිරියට ගණනය කරයි. එය ඍණ අගයක් නම්, MySQL ස්ට්‍රින්ග් එකේ අවසානයෙන් පසුපසට ගණනය කරයි. len අගය නොදැක්වූ විට, MySQL නියමිත ස්ථානයේ සිට ස්ට්‍රින්ග් එකේ අවසානය දක්වා ලබා ගනී.

1.2 SUBSTRING ක්‍රියාවලිය භාවිතා කරන අවස්ථා

මෙම ක්‍රියාවලිය ස්ට්‍රින්ග් දත්ත ආකෘතිකරණය කිරීම සහ විශේෂ කොටස් ලබා ගැනීම සඳහා භාවිතා කරයි, එමඟින් දත්ත ගබඩාවක තොරතුරු සොයා ගැනීම සහ සැකසීම පහසු කරයි.

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

මූලික කරුණු තේරුම් ගැනීමට, පහත සරල උදාහරණ කිහිපයක් බලන්න.

2.1 ස්ට්‍රින්ග් එකක කොටසක් ලබා ගැනීම

පහත විමසුම “Hello, World!” ස්ට්‍රින්ග් එකේ 3 වන අක්ෂරයෙන් ආරම්භ කර 6 අක්ෂර ලබා ගනී.

SELECT SUBSTRING('Hello, World!', 3, 6);

ප්‍රතිඵලය "llo, W" වේ. pos 3 වන බැවින්, 3 වන අක්ෂරයෙන් ලබා ගැනීම ආරම්භ වේ, len 6 වන බැවින් 6 අක්ෂර ලබා ගනී.

2.2 දිග පරාමිතිය නොදැක්වීම

len අගය නොදැක්වූ විට, MySQL නියමිත ස්ථානයේ සිට ස්ට්‍රින්ග් එකේ අවසානය දක්වා ලබා ගනී.

SELECT SUBSTRING('Hello, World!', 8);

ප්‍රතිඵලය "World!" වේ, එය 8 වන අක්ෂරයෙන් පසු සියල්ල ලබා ගනී.

2.3 ඍණ ස්ථානයක් භාවිතා කිරීම

ඍණ අගයක් භාවිතා කළහොත්, ස්ට්‍රින්ග් එකේ අවසානයෙන් ස්ථානය නියම කළ හැක.

SELECT SUBSTRING('Hello, World!', -5);

මෙම විමසුම "orld!" ලබා දෙයි, එය අවසාන 5 අක්ෂර ලබා ගනී.

3. SUBSTRING ක්‍රියාවලියේ ප්‍රායෝගික යෙදුම්

SUBSTRING ක්‍රියාවලිය වාස්තුක දත්ත මෙහෙයුම් වල බොහෝවිට භාවිතා වේ. පහත ප්‍රායෝගික උදාහරණ කිහිපයක් බලන්න.

3.1 ඊමේල් ලිපිනයකින් ඩොමේන් ලබා ගැනීම

SUBSTRING සමඟ LOCATE එකතු කිරීමෙන්, ඊමේල් ලිපිනයකින් “@” පසු ඇති ඩොමේන් කොටස ලබා ගත හැක.

SELECT email, SUBSTRING(email, LOCATE('@', email) + 1) AS domain FROM users;

මෙම විමසුම “@” පසු ඇති ස්ට්‍රින්ග් එක ලබා ගනිමින්, ඩොමේන් කොටස පමණක් ආපසු ලබා දෙයි.

3.2 නිෂ්පාදන කේතයකින් කොටසක් ලබා ගැනීම

මෙම උදාහරණය නිෂ්පාදන කේතයකින් විශේෂ කොටසක් ලබා ගැනීමට පෙන්වයි.

SELECT product_code, SUBSTRING(product_code, 5, 4) AS product_id FROM products;

මෙම විමසුම නිෂ්පාදන කේතයේ 5 වන අක්ෂරයෙන් ආරම්භ කර 4 අක්ෂර ලබා ගනිමින්, product_id නමින් නව තීරුවක් ලෙස ප්‍රදර්ශනය කරයි.

3.3 උපවිමසුමක (Subquery) භාවිතය

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

SELECT id, SUBSTRING(description, 1, 10) AS short_desc FROM (SELECT * FROM products WHERE category = 'Electronics') AS sub;

මෙම විමසුම category ‘Electronics’ වන නිෂ්පාදන වල description හි පළමු 10 අක්ෂර ලබා ගනී.

4. අනෙකුත් ස්ට්‍රින්ග් ක්‍රියාවලීන් සමඟ සංසන්දනය

SUBSTRING සමඟ සමාන අරමුණු සඳහා භාවිතා කළ හැකි අනෙකුත් ක්‍රියාවලීන් ලෙස LEFT, RIGHT, සහ SUBSTR ඇත.

4.1 LEFT සහ RIGHT ක්‍රියාවලීන්

  • LEFT(str, len) : ස්ට්‍රින්ග් එකේ ආරම්භය සිට නියමිත අක්ෂර ගණන ලබා ගනී.
  • RIGHT(str, len) : ස්ට්‍රින්ග් එකේ අවසානයෙන් නියමිත අක්ෂර ගණන ලබා ගනී.
    SELECT LEFT('Hello, World!', 5);  -- "Hello"
    SELECT RIGHT('Hello, World!', 6); -- "World!"
    

මෙම ක්‍රියාවලීන් ස්ට්‍රින්ග් එකේ ආරම්භය හෝ අවසානයෙන් උපස්ට්‍රින්ග් එකක් ලබා ගැනීමට ඉතා පහසු වේ.

4.2 SUBSTR ක්‍රියාවලිය

.SUBSTR යනු SUBSTRING සඳහා අන්‍ය නාමයක් වන අතර, එය ඒම ආකාරයෙන් භාවිත කළ හැක.

SELECT SUBSTR('Hello, World!', 8); -- "World!"

මෙම විමසුම "World!" ප්‍රතිඵලය ලබා දේ, SUBSTRING වැනි.

5. SUBSTRING ක්‍රියාවලිය සඳහා උසස් භාවිතය සහ සුදුසුකම්

මෙම කොටස උසස් භාවිතය සහ සුදුසුකම් තාක්ෂණයන් පිළිබඳ විස්තර කරයි.

5.1 කාර්ය සාධන සුදුසුකම්

SUBSTRING විශාල දත්ත කට්ටලයන් මත භාවිතා කිරීම කාර්ය සාධනයට බලපා හැක. අවශ්‍ය නම්, දර්ශක (index) සකසා විමසුම් ක්‍රියාත්මක සැලැස්ම පරීක්ෂා කරන්න. එසේම, ඔබ එකම උපස්තරය නිතර ලබා ගන්නේ නම්, ප්‍රතිඵලය කෑෂ් කිරීම ගැන සිතන්න.

5.2 WHERE වාක්‍යයේ භාවිතය

SUBSTRING එක WHERE වාක්‍යයේ භාවිතා කර උපස්තර කොන්දේසිය මත රෙකෝඩ් පිරික්සිය හැක.

SELECT * FROM products WHERE SUBSTRING(product_code, 1, 3) = 'ABC';

මෙම විමසුම product_code හි පළමු අක්ෂර 3 ‘ABC’ වන නිෂ්පාදන සොයයි.

6. SUBSTRING ක්‍රියාවලිය සඳහා උදාහරණ සහ හොඳ පුරුදු

මෙන්න SUBSTRING භාවිතයේ ප්‍රායෝගික උදාහරණ සහ වාස්තුකාර්ය සඳහා හොඳ පුරුදු.

6.1 නියැදි කේතය

පහත නියැදි කේතය ගනුදෙනුකරුගේ සම්පූර්ණ නාමය පළමු නාමය සහ අවසාන නාමයට වෙන් කරයි.

SELECT name, SUBSTRING(name, 1, LOCATE(' ', name) - 1) AS first_name,
       SUBSTRING(name, LOCATE(' ', name) + 1) AS last_name
FROM customers;

මෙම විමසුමේ, පළමු නාමය සහ අවසාන නාමය ඉඩක් (space) මගින් වෙන් කරන සම්පූර්ණ නාමයෙන් ලබා ගනී.

6.2 හොඳ පුරුදු

  • ඔබට අවශ්‍ය දේ පමණක් ලබා ගන්න : කාර්ය සාධන බලපෑම අඩු කිරීම සඳහා උපස්තර දිග ඉතා කුඩා ලෙස තබන්න.
  • දත්ත වර්ගයන්ට අවධානය දෙන්න : SUBSTRING සංඛ්‍යාත්මක දත්ත වලට යෙදුවහොත්, එය ස්පෂ්ටවම string (අක්ෂර) වර්ගයට පරිවර්තනය කළ යුතු විය හැක.
  • දර්ශක (index) භාවිතය ගැන සිතන්න : WHERE වාක්‍යයේ SUBSTRING භාවිතා කරන විට, දර්ශක සාර්ථකව භාවිත නොවිය හැකි බැවින්, විමසුම් කාර්ය සාධනය අවධානයෙන් නිරීක්ෂණය කරන්න.

7. දෝෂ හසුරුවීම සහ අනුවාද වෙනස්කම්

මෙම කොටස SUBSTRING භාවිතයේ දෝෂ හසුරුවීම සහ MySQL අනුවාද අතර වෙනස්කම් පිළිබඳව කවරයි.

7.1 දෝෂ හසුරුවීම

නිර්දේශිත ස්ථානය අක්ෂර මාලාවේ පරාසයෙන් පිටත නම්, SUBSTRING හිස් අක්ෂර මාලාවක් (empty string) ලබා දේ. මෙය දෝෂයක් නොවන බැවින්, අවශ්‍ය නම් ප්‍රතිඵලය පෙර පරීක්ෂා කිරීම සඳහා තර්කයක් (logic) එකතු කිරීම සුදුසුය.

7.2 අනුවාද වෙනස්කම්

MySQL අනුවාදය අනුව, SUBSTRING ක්‍රියාවලියේ හැසිරීම වෙනස් විය හැක. උදාහරණයක් ලෙස, පරණ අනුවාද කිහිපයක් බහු-බයිට් අක්ෂර (multi-byte characters) වෙනස් ලෙස සැලකේ. අනුවාද අතර අනුකූලතාව පරීක්ෂා කර, අවශ්‍ය විට සුදුසු පියවර ගන්න.