- 1 1. Mis on SUBSTRING funktsioon?
- 2 2. SUBSTRING funktsiooni põhiline kasutamine
- 3 3. SUBSTRING funktsiooni praktilised rakendused
- 4 4. Võrdlus teiste stringi funktsioonidega
- 5 5. SUBSTRING funktsiooni laiendatud kasutus ja optimeerimine
- 6 6. SUBSTRING funktsiooni näited ja parimad tavad
- 7 7. Vigade käsitlemine ja versioonide erinevused
1. Mis on SUBSTRING
funktsioon?
SUBSTRING
funktsioon on oluline vahend MySQL-is, mis võimaldab stringist alamosa välja võtta. Selle abil saab andmebaasis olevatest andmetest eraldada ainult vajaliku osa. Näiteks on seda kasulik kasutada, kui soovid e-posti aadressist domeeni välja võtta või tootekoodist kindla osa eraldada.
1.1 Põhisüntaks
SUBSTRING
funktsiooni põhisüntaks on järgmine:
SUBSTRING(str, pos)
SUBSTRING(str, pos, len)
str
: lähte string, millest osa võetakse.pos
: alguspositsioon (algab väärtusest 1).len
: eraldatavate märkide arv (valikuline).
Kui pos
on positiivne väärtus, alustatakse algusest määratud kohani. Negatiivse väärtuse korral loetakse lõpu poolt. Kui len
on vahele jäetud, eraldatakse alates määratud positsioonist kuni stringi lõpuni.
1.2 SUBSTRING
funktsiooni kasutusalad
Seda funktsiooni kasutatakse stringide vormindamiseks ja kindlate osade eraldamiseks, mis muudab andmebaasis otsingu ja andmetöötluse tõhusamaks.
2. SUBSTRING
funktsiooni põhiline kasutamine
Parema arusaamise huvides vaatame mõnda lihtsat näidet.
2.1 Stringi osa eraldamine
Järgmine päring eraldab stringist “Hello, World!” alates 3. positsioonist 6 märki.
SELECT SUBSTRING('Hello, World!', 3, 6);
Tulemus on "llo, W"
. Kuna pos
on 3, alustatakse kolmandast märgist ja len
on 6, seega eraldatakse kuus märki.
2.2 Märkide arvu vahelejätmine
Kui len
ära jätta, eraldatakse string lõpuni alates määratud positsioonist.
SELECT SUBSTRING('Hello, World!', 8);
Tulemus on "World!"
, kuna eraldamine algab 8. märgist ja jätkub lõpuni.
2.3 Negatiivse positsiooni kasutamine
Negatiivset väärtust kasutades saab positsiooni määrata stringi lõpust lugedes.
SELECT SUBSTRING('Hello, World!', -5);
See päring tagastab "orld!"
, mis tähendab, et viimased viis märki eraldatakse.
3. SUBSTRING
funktsiooni praktilised rakendused
SUBSTRING
funktsiooni kasutatakse sageli reaalses andmetöötluses. Siin on mõned rakendusnäited.
3.1 Domeeni eraldamine e-posti aadressist
Kombineerides SUBSTRING
ja LOCATE
, saab e-posti aadressist eraldada domeeni osa.
SELECT email, SUBSTRING(email, LOCATE('@', email) + 1) AS domain FROM users;
See päring eraldab stringi alates märgist “@”, jättes alles ainult domeeni.
3.2 Tootekoodi osa eraldamine
Näide, kus tootekoodist eraldatakse kindel osa.
SELECT product_code, SUBSTRING(product_code, 5, 4) AS product_id FROM products;
See päring eraldab tootekoodist alates 5. positsioonist 4 märki ja kuvab selle uue veeruna product_id
.
3.3 Kasutamine alampäringus
Kombineerides alampäringutega, saab luua keerukamaid tingimusi andmete eraldamiseks.
SELECT id, SUBSTRING(description, 1, 10) AS short_desc FROM (SELECT * FROM products WHERE category = 'Electronics') AS sub;
See päring tagastab kategoorias ‘Electronics’ olevate toodete description
veeru esimesed kümme märki.
4. Võrdlus teiste stringi funktsioonidega
Lisaks SUBSTRING
-ile saab sarnase eesmärgi saavutamiseks kasutada ka funktsioone LEFT
, RIGHT
ja SUBSTR
.
4.1 LEFT
ja RIGHT
funktsioonid
LEFT(str, len)
: võtab stringi algusest määratud arvu märke.RIGHT(str, len)
: võtab stringi lõpust määratud arvu märke.
SELECT LEFT('Hello, World!', 5); -- "Hello"
SELECT RIGHT('Hello, World!', 6); -- "World!"
Need funktsioonid on mugavad, kui soovid stringi kindlast asukohast osa eraldada.
4.2 SUBSTR
funktsioon
SUBSTR
on SUBSTRING
alias ja seda saab kasutada samamoodi.
SELECT SUBSTR('Hello, World!', 8); -- "World!"
See päring tagastab sama tulemuse nagu SUBSTRING
, ehk "World!"
.
5. SUBSTRING
funktsiooni laiendatud kasutus ja optimeerimine
Siin selgitame edasijõudnud kasutusviise ja optimeerimistehnikaid.
5.1 Jõudluse optimeerimine
Kui kasutada SUBSTRING
väga suurte andmemahtude puhul, võib see mõjutada päringute jõudlust. Vajadusel loo indeksid ja kontrolli päringu täitmise plaani. Kui sama osa stringist eraldatakse sageli, kaalu tulemuse vahemällu salvestamist.
5.2 Kasutamine WHERE klauslis
SUBSTRING
saab kasutada ka WHERE
klauslis tingimusotsinguks osaliste stringide alusel.
SELECT * FROM products WHERE SUBSTRING(product_code, 1, 3) = 'ABC';
See päring tagastab tooted, mille product_code
algab väärtusega ‘ABC’.
6. SUBSTRING
funktsiooni näited ja parimad tavad
Siin toome välja praktilised näited ja soovitused SUBSTRING
funktsiooni kasutamisel.
6.1 Näidiskood
Järgmine näide näitab, kuidas kliendi täisnimest eraldada eesnimi ja perekonnanimi.
SELECT name, SUBSTRING(name, 1, LOCATE(' ', name) - 1) AS first_name,
SUBSTRING(name, LOCATE(' ', name) + 1) AS last_name
FROM customers;
See päring eraldab tühiku põhjal täisnimest ees- ja perekonnanime.
6.2 Parimad tavad
- Minimaalne eraldamine: kasuta
SUBSTRING
-i ainult nii palju kui vaja, et vähendada jõudluse mõju. - Andmetüübi jälgimine: kui rakendad
SUBSTRING
-i arvandmetele, teisenda need esmalt stringiks. - Indeksite kasutamine:
WHERE
klauslis kasutades arvesta, et indeksid ei pruugi alati kehtida, mis võib päringu aeglasemaks muuta.
7. Vigade käsitlemine ja versioonide erinevused
Räägime, kuidas SUBSTRING
funktsiooni puhul arvestada vigade käsitlemist ja MySQL versioonide erinevusi.
7.1 Vigade käsitlemine
Kui määratud positsioon jääb stringi piiridest välja, tagastab SUBSTRING
tühja stringi. Seda ei käsitleta veana, seega on soovitatav lisada loogika tulemuse eelkontrolliks.
7.2 Versioonide erinevused
MySQL-i versioonide lõikes võib SUBSTRING
funktsiooni käitumine erineda. Näiteks mõned vanemad versioonid käsitlevad mitmebaidilisi märke teisiti. Kontrolli kindlasti versioonide ühilduvust ja vajadusel rakenda sobivaid lahendusi.