SQLite Merkkijonofunktiot: REPLACE, SUBSTR, TRIM, ROUND
SQLite on oletusarvoisesti varustettu luettelolla sisรครคnrakennetuista toiminnoista SQLite kirjasto. Voit myรถs lisรคtรค joitain muita mukautettuja toimintoja C-kielellรค laajentaaksesi ydintoimintoja.
Huomaa, ettรค kaikissa seuraavissa esimerkeissรค sinun on suoritettava sqlite3.exe ja avattava yhteys mallitietokantaan juoksevana:
Vaihe 1) Tรคssรค vaiheessa
- Avaa Oma tietokone ja siirry seuraavaan hakemistoon "C:\sqlite" ja sitten
- auki"sqlite3.exe"
Vaihe 2) Avaa tietokanta "TutorialsSampleDB.db" seuraavalla komennolla:
Nyt olet valmis suorittamaan mitรค tahansa kysymys ja kokeile mitรค tahansa seuraavissa osissa kรคytettyjรค kyselyitรค.
Lรถytรครค merkkijonon LENGTH SQLite
Merkkijonon pituuden selvittรคmiseksi kรคytรค PITUUS(X), jossa X on merkkijonoarvo. Jos X on nolla-arvo, pituusfunktio palauttaa nolla-arvon.
Voit myรถs kรคyttรครค pituusfunktiota numeeristen arvojen kanssa saadaksesi numeerisen arvon pituuden.
Esimerkiksi:
Seuraavassa esimerkissรค yritรคmme LENGTH-funktion syntaksia seuraavilla arvoilla:
SELECT LENGTH('A string'), LENGTH(NULL), LENGTH(20), LENGTH(20.5);
Tรคmรค antaa sinulle:
Tulos on seuraava:
- LENGTH('A string') palauttaa 8, joka on merkkijonon "A string" pituus.
- LENGTH(NULL) palauttaa nollan.
- PITUUS(20) palauttaa arvon 2, koska 20 on 2 pituutta.
- PITUUS(20.5) palauttaa 4; Liukuluku "." lasketaan merkiksi, joten sinulla on neljรค merkkiรค โ 3 merkkiรค, jotka vastaavat numeroiden pituutta. Plus yksi merkki liukulukulle ".".
Vaihto UPPER- ja LOWER-toiminnoilla
UPPER(X) palauttaa saman x-merkkijonon, mutta se edustaa kaikkia merkkijonomerkkejรค isoilla kirjaimilla.
LOWER(X) palauttaa saman x-merkkijonon, mutta se edustaa kaikki merkkijonomerkit pienillรค merkeillรค.
UPPER ja LOWER palauttavat nolla-arvot, jos vรคlitรคt niille nolla-arvon.
Jos vรคlitรคt numeerisia arvoja kohtaan UPPER tai LOWER, molemmat palauttavat tarkan numeerisen arvon.
Esimerkiksi:
SELECT UPPER('a string'), LOWER('A STRING'), UPPER(20), LOWER(20), UPPER(NULL), LOWER(NULL);
Tรคmรค antaa sinulle:
Tulos on seuraava:
- UPPER('merkkijono') palauttaa merkkijonon "nauha" isolla kirjaimella "NAUHA".
- LOWER('A STRING') palauttaa merkkijonon "NAUHA"pienellรค kirjaimella"nauha".
- UPPER(20), LOWER(20) palauttaa saman luvun, koska niillรค ei ole vaikutusta numeroihin.
- UPPER(NULL), LOWER(NULL) palauttaa nollan, koska vรคlitimme niille nolla-arvon.
SQLite SUBSTR-toiminto
SUBSTR-funktio palauttaa tietyn mรครคrรคn merkkijonoa, alkaen tietystรค paikasta. Voit vรคlittรครค funktiolle kolme operandia, kuten "SUBSTR(X,Y,Z)" seuraavasti:
- X on jรคsennettรคvรค merkkijonoliteraali tai merkkijonosarake. Voit antaa kirjaimellisen arvon (staattinen arvo) tai sarakkeen nimen, jolloin arvo luetaan sarakkeen arvoista.
- Y on aloituskohta siitรค alkavan merkkijonon vรคhentรคmiseksi.
- Z on jรคsennettรคvien merkkien mรครคrรค tietystรค kohdasta Y alkaen. Tรคmรค numero on valinnainen, voit jรคttรครค sen huomiotta, ja tรคssรค tapauksessa SQLite vรคhentรครค merkkijonon kohdasta Y ja kertoo merkkijonon lopun.
Esimerkiksi:
Seuraavassa kyselyssรค kรคytรคmme SUBSTR-funktiota saadaksemme oppilaiden nimistรค 4 merkkiรค toisesta merkistรค alkaen:
SELECT StudentName, SUBSTR(StudentName, 2, 4), SUBSTR(StudentName, 2) FROM Students;
Tรคmรค antaa sinulle:
- SUBSTR(opiskelijan nimi, 2, 4) alamerkkijono "Opiskelijan nimiโ alkaen toisesta merkistรค ja palauttaa seuraavat 4 merkkiรค.
- Kuitenkin funktiossa SUBSTR(opiskelijan nimi, 2) emme mรครคrittรคneet numeroa palautettaville merkeille, siksi SQLite palautti kaikki jรคljellรค olevat merkit "Opiskelijan nimiโ alkaen toisesta paikasta.
Merkkijonon osien vaihtaminen kanssa SQLite REPLACE-toiminto
REPLACE kรคytetรครคn korvaamaan jokainen toisessa merkkijonossa esiintyvรค merkkijono merkkijonolla.
REPLACE(X, Y, Z) โ X on syรถtemerkkijonon literaali tai sarake. Y on merkkijono, joka korvataan merkkijonolla Z. Huomaa, ettรค se korvaa kaikki merkkijonon Y esiintymรคt Z:lla, ei vain yhtรค.
Esimerkiksi:
Seuraavassa kyselyssรค korvaamme kaikki merkkijonon esiintymรคt "xx"merkkijonolla"SQLite"
SELECT REPLACE('xx is very lightweight, xx is easy to learn', 'xx', 'SQLite');
Tรคmรค antaa sinulle
- Korvaa-toiminto korvasi kaikki merkkijonot "xx"merkkijonolla"SQLite".
- Tulos tulee siis olemaan "SQLite on erittรคin kevyt, SQLite on helppo oppia."
Leikkaa tyhjiรค kohtia SQLite TRIM-toiminto
TRIM poista tyhjรคt vรคlilyรถnnit merkkijonon alusta tai lopusta. Se ei poista vรคlilyรถntejรค merkkijonon keskeltรค, vain alusta tai lopusta.
Esimerkiksi:
Seuraavassa kyselyssรค kรคytรคmme TRIM-funktiota poistamaan tyhjรคt vรคlilyรถnnit merkkijonon alusta ja lopusta.
Huomaa, ettรค ketjutusoperaattori โ||โ kรคytetรครคn lisรครคmรครคn ylimรครคrรคinen ";" merkkijonon loppuun. Osoittaakseen, ettรค tyhjรคt kohdat poistettiin mustasta ikkunasta.
SELECT TRIM(' SQLite is easy to learn ') || ';';
Tรคmรค antaa sinulle:
- Huomaa, kuinka tyhjรคt vรคlilyรถnnit poistettiin merkkijonon alusta ja lopusta ja korvattiin merkillรค ' ; ' lopussa.
Absoluuttisten arvojen lukeminen SQLite ABS-toiminto
ABS-funktio palauttaa numeerisen arvon itseisarvon. Absoluuttinen arvo on numeerinen arvo ilman positiivista tai negatiivista etumerkkiรค. ABS(X) palauttaa arvon, joka riippuu X:n arvosta seuraavasti:
- X:n itseisarvo, jos X on numeerinen arvo.
- NULL-arvo, jos X on nolla-arvo.
- "0.0" arvo, jos X on merkkijono.
Esimerkiksi:
Seuraavassa kyselyssรค yritรคmme saada ABS-funktion avulla merkkijonon, luvun ja nolla-arvon itseisarvon:
SELECT ABS(-2), ABS(+2), ABS('a string'), ABS(null);
Tรคmรค antaa sinulle:
Tulokset seuraavasti:
- ABS(-2), ABS(+2) palauttaa arvon 2, koska 2 on absoluuttinen arvo sekรค "-2" ettรค "+2".
- ABS('a string') palauttaa arvon 0.0, koska vรคlitit merkkijonoarvon, ei numeerista arvoa.
- ABS(null) palauttaa nollan, koska olet antanut sille nolla-arvon.
Arvojen pyรถristys ROUND-toiminnolla sisรครคn SQLite
Desimaaliluvut ovat numeroita, joissa on liukuluku ". siinรค esimerkiksi "20.5", "8.65". Liukulukun vasemmalla puolella olevaa osaa kutsutaan kokonaislukuosaksi ja liukulukun oikealla olevaa osaa desimaaliosaksi.
Kokonaisluvut ovat niitรค lukuja, joissa ei ole liukulukua. Esimerkiksi "20", "8".
ROUND(X) muuntaa desimaaliarvot tai sarakkeet X vain kokonaislukuiksi. Kokonaisluvun osa, joka on desimaalipilkun vasemmalla puolella oleva osa, palautetaan, ja kaikki desimaalipilkun oikealla puolella olevat numerot poistetaan.
Esimerkiksi:
Seuraavassa kyselyssรค yritรคmme ROUND-funktiota eri vaihtoehdoilla:
SELECT ROUND(12.4354354), ROUND(12.4354354, 2), ROUND(NULL), ROUND('a string');
Tรคmรค antaa sinulle:
Tulos seuraavanlainen:
- ROUND(12.4354354) โ palauttaa arvon "12", koska et mรครคrittรคnyt numeroiden mรครคrรครค. Niin, SQLite poistettu kaikki desimaaliosa.
- ROUND(12.4354354, 2) โ palauttaa arvon "12.44", koska olet mรครคrittรคnyt pyรถristettรคvรคksi vain 2 numeroa, jotka ovat kaksi numeroa desimaalipilkun oikealta puolelta.
- ROUND(NULL) โ palauttaa nollan, koska olet antanut sille nolla-arvon.
- ROUND('a string') โ palauttaa arvon "0.0", koska olet antanut sille merkkijonoarvon.
Lausekkeen tietotyypin etsiminen TYPEOF-funktiolla
Jos haluat selvittรครค sarakkeen tyypin tai kirjaimellisen arvon, voit tehdรค sen funktiolla TYPEOF.
Funktio TYPEOF(X) palauttaa nimestรครคn lausekkeen X tietotyypin. Se palauttaa merkkijonoarvon, joka ilmaisee X:n tietotyypin. Se palauttaa tietotyyppeihin perustuvan arvon, onko se "NULL"-arvo, todellinen, teksti, kokonaisluku jne.
Esimerkiksi:
Seuraavassa kyselyssรค yritรคmme TYPEOF-funktiota erityyppisillรค literaaliarvoilla:
SELECT TYPEOF(null), TYPEOF(12), TYPEOF(12.5), TYPEOF('a string');
Tรคmรค antaa sinulle:
Palautetut tulokset ovat seuraavat:
- TYYPPI(null) โ palauttaa nollan, koska olet antanut sille nolla-arvon.
- TYYPPI(12) โ palauttaa kokonaisluvun, koska 12 on kokonaisluku.
- TYYPPI(12.5) โ palauttaa REAL, koska 12.5 on reaaliluku.
- TYPEOF('merkkijono') โ palauttaa tekstin, koska "merkkijono" on teksti.
Etsitรครคn viimeksi lisรคtty tietue ko SQLite LAST_INSERT_ROWID
SQLite mรครคrittรครค kokonaislukuavaimen (Id) kaikkien taulukoiden kaikille riveille. Tรคtรค numeroa kรคytetรครคn yksilรถimรครคn nรคmรค rivit.
Kun LISรรT taulukkoon uuden rivin, SQLite antaa rowidille yksilรถllisen arvon.
Jos taulukon ensisijainen avain on ilmoitettu vain yhdessรค sarakkeessa ja kyseisen sarakkeen tietotyyppi on INTEGER, tรคtรค sarakkeen arvoa kรคytetรครคn rivinรค.
LAST_INSERT_ROWID()-funktio palauttaa viimeksi lisรคtyn rivin ROW_ID:n missรค tahansa tietokannan taulukossa. Huomaa, ettรค se ei vaadi operandia.
Esimerkiksi:
Seuraavassa esimerkissรค suoritamme funktion LAST_INSERT_ROWID() seuraavasti:
SELECT LAST_INSERT_ROWID();
Tรคmรค antaa sinulle:
- LAST_INSERT_ROWID() palauttaa arvon 0, koska nykyisen tietokantayhteyden taulukoihin ei ole lisรคtty rivejรค.
Lisรคtรครคn nyt uusi opiskelija ja suoritetaan funktio LAST_INSERT_ROWID() uudelleen insert-kรคskyn jรคlkeen seuraavasti:
INSERT INTO Students VALUES(11, 'guru', 1, '1998-10-12'); SELECT LAST_INSERT_ROWID();
Tรคmรค antaa sinulle:
- Kun olemme lisรคnneet uuden opiskelijan, jonka tunnus on 11, LAST_INSERT_ROWID() palauttaa viimeksi lisรคtyn rivitunnuksen, joka on 11.
Oman version hankkiminen SQLite kirjasto
Saadaksesi oman version SQLite kirjasto, sinun on kutsuttava SQLITE_VERSION()-funktio.
Esimerkiksi:
Selvitetรครคn mikรค on versio SQLite kรคytรคmme suorittamalla seuraavan komennon:
SELECT SQLITE_VERSION();
Tรคmรค antaa sinulle:
SQLITE_VERSION() palauttaa 3.9.2:n, joka on versiosta SQLite kรคytรคmme.
Kรคyttรคjรคn mรครคrittรคmien funktioiden luominen ja kรคyttรคjรคn mรครคrittรคmien funktioiden yhdistรคminen
Joillekin kรคyttรคjille SQLite ydintoiminnot ovat rajalliset. Heidรคn on ehkรค lisรคttรคvรค mukautettuja toimintoja mukautettuja tarpeitaan varten.
SQLite ei tue kรคyttรคjรคn mรครคrittรคmien funktioiden luomista. Toisin kuin muissa tietokannan hallintajรคrjestelmissรค, et voi luoda kรคyttรคjรคn mรครคrittรคmiรค toimintoja SQLite suoraan.
Voit kuitenkin luoda funktion kรคyttรคmรคllรค ohjelmointikieliรค, kuten C#, C, PHP tai C++ ja liitti sen toiminnon ytimeen SQLite toiminnot SQLite itse kirjasto kรคyttรคmรคllรค "sqlite3_create_functionโ-toiminto. Sitten voit kรคyttรครค niitรค uudelleen tietokannassasi.
Esimerkiksi:
Seuraavassa esimerkissรค luomme kรคyttรคjรคn mรครคrittรคmรคn funktion kรคyttรคmรคllรค C# ohjelmointikieli ja lisรครค se siihen SQLite toiminnot:
[SQLiteFunction(Name = "DoubleValue", Arguments = 1, FuncType = FunctionType.Scalar)]
public class DoubleValue: SQLiteFunction
{
public override object Invoke(object[] args)
{
return args[0] * 2;
}
}
Tรคmรค koodinpรคtkรค on kirjoitettu C# ohjelmointikieli; se luo C#-funktion kรคyttรคmรคllรค C#-koodia.
Toiminnon nimi on "DoubleArvoโ se ottaa yhden parametrin ja palauttaa sen arvon kerrottuna kahdella.
Huomaa, ettรค C# lisรครค tรคmรคn funktion automaattisesti SQLite. Kaikki mitรค tarvitset on kรครคntรครค ja suorittaa tรคmรค koodi. Sitten C# lisรครค kyseisen funktion samalla nimellรค luetteloon SQLite toimintoja. Sitten voit kรคyttรครค tรคtรค toimintoa SQLite.
Samalla tavalla ohjelmointikielillรค, kuten C#, C, PHP tai C++, voit myรถs luoda kรคyttรคjรคn mรครคrittรคmiรค koostefunktioita. Joita kรคytetรครคn laajentamaan aggregaattitoimintoja SQLite ja kรคytรค niitรค mukautettujen koontifunktioiden luomiseen.
Yhteenveto
- SQLite tarjoaa kattavan joukon sisรครคnrakennettuja toimintoja, jotka tekevรคt tietokannan taulukoiden ja sarakkeiden kรคsittelystรค helppoa, kuten nรคimme. Voit kรคyttรครค nรคitรค toimintoja sarakkeiden sekรค kirjaimellisten arvojen kanssa missรค tahansa lausekkeessa SQL-kyselyissรคsi.
- Voit myรถs kรคyttรครค pituusfunktiota numeeristen arvojen kanssa saadaksesi numeerisen arvon pituuden.
- UPPER ja LOWER palauttavat nolla-arvot, jos vรคlitรคt niille nolla-arvon.
- SUBSTR-funktio palauttaa tietyn mรครคrรคn merkkijonoa, alkaen tietystรค paikasta.
- REPLACE kรคytetรครคn korvaamaan jokainen toisessa merkkijonossa esiintyvรค merkkijono merkkijonolla.
- TRIM poistaa tyhjรคt vรคlilyรถnnit merkkijonon alusta tai lopusta.
- ABS-funktio palauttaa numeerisen arvon itseisarvon.
- ROUND(X) muuntaa desimaaliarvot tai sarakkeet X vain kokonaislukuiksi.
- Funktio TYPEOF(X) palauttaa nimestรครคn lausekkeen X tietotyypin.
- LAST_INSERT_ROWID()-funktio palauttaa viimeksi lisรคtyn rivin ROW_ID:n missรค tahansa tietokannan taulukossa.













