SQLite Strengefunksjoner: REPLACE, SUBSTR, TRIM, ROUND
SQLite er som standard utstyrt med en liste over innebygde funksjoner i SQLite bibliotek. Du kan også legge til noen andre egendefinerte funksjoner ved å bruke C-språket for å utvide kjernefunksjonene.
Merk at for alle de følgende eksemplene må du kjøre sqlite3.exe og åpne en tilkobling til eksempeldatabasen som flytende:
Trinn 1) I dette trinnet
- Åpne Min datamaskin og naviger til følgende katalog "C:\sqlite" og så
- åpen "sqlite3.exe"
Trinn 2) Åpne databasen "TutorialsSampleDB.db" med følgende kommando:
Nå er du klar til å kjøre hvilken som helst spørring og prøv alle søk som brukes i de følgende delene.
Finne LENGDEN på en streng i SQLite
For å finne lengden på en streng, bruk LENGTH(X) der X er en strengverdi. Hvis X er en nullverdi, vil lengdefunksjonen returnere en nullverdi.
Du kan også bruke lengdefunksjonen med numeriske verdier for å få lengden på den numeriske verdien.
Eksempel:
I følgende eksempel vil vi prøve LENGTH-funksjonens syntaks med verdier som følger:
SELECT LENGTH('A string'), LENGTH(NULL), LENGTH(20), LENGTH(20.5);
Dette vil gi deg:
Resultatet er som følger:
- LENGTH('En streng') returnerer 8 som er lengden på strengen "En streng".
- LENGTH(NULL) returnerer null.
- LENGTE(20) returnerer 2, fordi 20 er 2 lengder.
- LENGDE(20.5) returnerer 4; Det flytende punktet "." regnes som et tegn, så du vil ha fire tegn – de 3 tegnene som er lengden på tallene. Pluss ett tegn til for flytepunktet "".
Skiftekasse med UPPER-funksjon og LOWER-funksjon
UPPER(X) vil returnere den samme x-strengen, men den vil representere alle strengtegnene med store tegn.
LOWER(X) vil returnere den samme x-strengen, men den vil representere alle strengtegnene med små tegn.
UPPER og LOWER returnerer nullverdier hvis du sender en nullverdi til dem.
Hvis du sender numeriske verdier til UPPER eller LOWER, vil begge returnere den nøyaktige numeriske verdien.
Eksempel:
SELECT UPPER('a string'), LOWER('A STRING'), UPPER(20), LOWER(20), UPPER(NULL), LOWER(NULL);
Dette vil gi deg:
Resultatet er som følger:
- UPPER('en streng') returnerer strengen "en streng" med stor bokstav representasjon "EN STRING".
- LOWER('A STRING') returnerer strengen "EN STRING" representasjon med små bokstaver "en streng".
- UPPER(20), LOWER(20) returnerer det samme tallet, siden de ikke har noen effekt på tall.
- UPPER(NULL), LOWER(NULL) returnerer null fordi vi ga dem en nullverdi.
SQLite SUBSTR-funksjon
SUBSTR-funksjonen returnerer et spesifikt antall strenger, fra en bestemt posisjon. Du kan sende tre operander til funksjonen, slik "SUBSTR(X;Y;Z)" som følgende:
- X er strengen literal eller strengkolonnen som skal analyseres. Du kan sende en bokstavelig verdi (statisk verdi) eller et kolonnenavn, og i dette tilfellet vil verdien leses fra kolonnens verdier.
- Y er startposisjonen for å trekke strengen fra den.
- Z er antall tegn som skal analyseres fra den spesifikke posisjonen Y. Dette tallet er valgfritt, du kan ignorere det, og i dette tilfellet, SQLite vil trekke fra strengen fra posisjon Y fortelle slutten av strengen.
Eksempel:
I den følgende spørringen vil vi bruke SUBSTR-funksjonen for å hente de 4 tegnene fra det andre tegnet fra elevenes navn:
SELECT StudentName, SUBSTR(StudentName, 2, 4), SUBSTR(StudentName, 2) FROM Students;
Dette vil gi deg:
- SUBSTR(Studentnavn; 2; 4) understreng strengen "Studentnavn” fra det andre tegnet, og returner de neste 4 tegnene.
- Imidlertid i funksjonen SUBSTR(studentnavn, 2) vi spesifiserte ikke et tall for tegnene som skulle returneres, det er derfor SQLite returnerte alle de gjenværende tegnene i "Studentnavn” fra den andre posisjonen.
Endre deler av en streng med SQLite ERSTATT-funksjon
REPLACE brukes til å erstatte hver streng som oppstod på en annen streng med en streng.
REPLACE(X, Y, Z) – X er inndatastrengen eller kolonnen. Y er strengen som skal erstattes med strengen Z. Merk at den vil erstatte enhver forekomst av strengen Y med Z, ikke bare én.
Eksempel:
I den følgende spørringen vil vi erstatte all forekomst av strengen "xx" med strengen "SQLite"
SELECT REPLACE('xx is very lightweight, xx is easy to learn', 'xx', 'SQLite');
Dette vil gi deg
- Erstatt-funksjonen erstattet alle strengene "xx" med strengen "SQLite".
- Så utgangen blir "SQLite er veldig lett, SQLite er lett å lære”.
Trimming av blanke mellomrom med SQLite TRIM-funksjon
TRIM fjern mellomrom fra begynnelsen eller slutten av strengen. Det vil ikke fjerne mellomrom i midten av strengen, bare fra begynnelsen eller slutten.
Eksempel:
I den følgende spørringen vil vi bruke TRIM-funksjonen til å fjerne de tomme mellomrommene fra begynnelsen og slutten av strengen.
Merk at sammenkoblingsoperatoren "||" brukes til å legge til en ekstra ";" til slutten av strengen. For å vise deg at de tomme plassene ble fjernet i det svarte vinduet.
SELECT TRIM(' SQLite is easy to learn ') || ';';
Dette vil gi deg:
- Legg merke til hvordan de tomme mellomrommene ble fjernet fra begynnelsen og slutten av strengen, erstattet med ' ; ' på slutten.
Lese absolutte verdier med SQLite ABS funksjon
ABS-funksjonen returnerer den absolutte verdien av en numerisk verdi. Den absolutte verdien er den numeriske verdien uten noe positivt eller negativt fortegn. ABS(X) returnerer en verdi avhengig av verdien til X som følger:
- Den absolutte verdien av X hvis X er en numerisk verdi.
- En NULL-verdi hvis X er en nullverdi.
- "0.0"-verdi hvis X er en streng.
Eksempel:
I følgende spørring vil vi prøve å få den absolutte verdien av en streng, et tall og en nullverdi ved å bruke ABS-funksjonen:
SELECT ABS(-2), ABS(+2), ABS('a string'), ABS(null);
Dette vil gi deg:
Resultatene som følger:
- ABS(-2), ABS(+2) returnerer 2, fordi 2 er absolutt verdi for både "-2" og "+2".
- ABS('en streng') returnerer "0.0" fordi du sendte en strengverdi, ikke en numerisk verdi.
- ABS(null) returnerer null fordi du sendte en nullverdi for den.
Avrunding av verdier med ROUND-funksjonen inn SQLite
Desimaltall er tall med flyttall "." på den, for eksempel "20.5", "8.65". Delen til venstre for flyttallen kalles heltallsdelen, og delen til høyre for flyttallen er desimaldelen.
Heltall er disse tallene uten flytende komma. For eksempel "20", "8".
ROUND(X) konverterer desimalverdiene eller kolonnene X til bare heltall. Heltallsdelen som er delen til venstre for desimaltegnet vil bli returnert, og alle sifrene til høyre for desimaltegnet vil bli fjernet.
Eksempel:
I følgende spørring vil vi prøve ROUND-funksjonen med forskjellige alternativer:
SELECT ROUND(12.4354354), ROUND(12.4354354, 2), ROUND(NULL), ROUND('a string');
Dette vil gi deg:
Resultatet som følger:
- ROUND(12.4354354) – returnerer verdien “12”, fordi du ikke spesifiserte antall sifre. Så, SQLite fjernet hele desimaldelen.
- ROUND(12.4354354, 2) – returnerer verdien "12.44", fordi du spesifiserte bare 2 sifre å runde av, som er de to sifrene fra høyre for desimaltegnet.
- ROUND(NULL) – returnerer null fordi du sendte en nullverdi til den.
- ROUND('en streng') – returnerer verdien "0.0" fordi du sendte en strengverdi til den.
Finne datatypen for uttrykk med funksjonen TYPEOF
Hvis du vil finne ut typen av en kolonne eller en bokstavelig verdi, kan du bruke funksjonen TYPE for å gjøre det.
TYPEOF(X)-funksjonen, fra navnet, returnerer datatypen til uttrykket X. Den returnerer en strengverdi som indikerer datatypen X. Den returnerer verdien basert på datatypene, enten det er en "NULL"-verdi, ekte, tekst, heltall, … osv.
Eksempel:
I følgende spørring vil vi prøve funksjonen TYPEOF med forskjellige typer bokstavelige verdier:
SELECT TYPEOF(null), TYPEOF(12), TYPEOF(12.5), TYPEOF('a string');
Dette vil gi deg:
Resultatene som returneres er som følger:
- TYPEOF(null) – returnerer null fordi du sendte en nullverdi til den.
- TYPEOF(12) – returner et heltall ettersom 12 er et heltall.
- TYPEOF(12.5) – returnerer REAL ettersom 12.5 er et reelt tall.
- TYPEOF('en streng') – returnerer tekst som "en streng" er en tekst.
Finner den siste innsatte posten med SQLite LAST_INSERT_ROWID
SQLite tildeler en heltallsnøkkel (Id) for alle radene i alle tabellene. Dette nummeret brukes til å identifisere disse radene unikt.
Når du SETTER INN en ny rad på en tabell, SQLite vil tildele rowiden en unik verdi.
Hvis tabellen har en primærnøkkel deklarert på kun én kolonne og den kolonnen er av datatypen INTEGER, vil denne kolonneverdien bli brukt som rowid.
LAST_INSERT_ROWID()-funksjonen returnerer ROW_ID for den sist innsatte raden i en hvilken som helst tabell i databasen. Merk at det ikke tar noen operand.
Eksempel:
I følgende eksempel vil vi kjøre funksjonen LAST_INSERT_ROWID() som følger:
SELECT LAST_INSERT_ROWID();
Dette vil gi deg:
- LAST_INSERT_ROWID() returnerer 0 fordi det ikke er noen rader satt inn i noen tabeller i den gjeldende databasetilkoblingen.
La oss nå sette inn en ny student og kjøre funksjonen LAST_INSERT_ROWID() igjen etter insert-setningen, slik:
INSERT INTO Students VALUES(11, 'guru', 1, '1998-10-12'); SELECT LAST_INSERT_ROWID();
Dette vil gi deg:
- Etter at vi har satt inn en ny student med id 11, vil LAST_INSERT_ROWID() returnere den siste innsatte rad-IDen som er 11.
Henter versjonen av din SQLite bibliotek
For å få versjonen av din SQLite biblioteket, må du kalle opp SQLITE_VERSION()-funksjonen.
Eksempel:
La oss finne ut hva som er versjonen av SQLite vi bruker ved å kjøre følgende kommando:
SELECT SQLITE_VERSION();
Dette vil gi deg:
SQLITE_VERSION() returnerer 3.9.2 som er versjonen av SQLite vi bruker.
Opprette brukerdefinerte funksjoner og samle brukerdefinerte funksjoner
For noen brukere er SQLite kjernefunksjonene er begrenset. De må kanskje legge til egendefinerte funksjoner for deres egendefinerte behov.
SQLite støtter ikke oppretting av brukerdefinerte funksjoner. I motsetning til andre databasebehandlingssystemer, kan du ikke opprette brukerdefinerte funksjoner i SQLite direkte.
Du kan imidlertid lage en funksjon ved å bruke programmeringsspråk som C#, C, PHP eller C++ og festet den funksjonen med kjernen SQLite funksjoner i SQLite selve biblioteket ved å bruke "sqlite3_create_function" funksjon. Deretter kan du gjenbruke dem i databasen din.
Eksempel:
I følgende eksempel vil vi lage en brukerdefinert funksjon ved å bruke C# programmeringsspråk og legg det til SQLite funksjoner:
[SQLiteFunction(Name = "DoubleValue", Arguments = 1, FuncType = FunctionType.Scalar)] public class DoubleValue: SQLiteFunction { public override object Invoke(object[] args) { return args[0] * 2; } }
Denne kodebiten er skrevet i C# programmeringsspråk; den lager en C#-funksjon ved å bruke C#-koden.
Funksjonsnavnet vil være "DoubleVerdi” den tar én parameter og returnerer verdien multiplisert med 2.
Merk at C# automatisk legger denne funksjonen til SQLite. Alt du trenger er å kompilere og kjøre denne koden. Da vil C# legge til funksjonen med samme navn til listen over SQLite funksjoner. Da kan du bruke denne funksjonen i SQLite.
På samme måte ved å bruke programmeringsspråk som C#, C, PHP eller C++, kan du også lage samlede brukerdefinerte funksjoner. Som brukes til å utvide aggregatfunksjonene inn SQLite og bruke dem til å lage tilpassede aggregatfunksjoner.
Sammendrag
- SQLite gir et omfattende sett med innebygde funksjoner som gjør arbeidet med databasens tabeller og kolonner enkelt som vi så. Du kan bruke disse funksjonene med kolonner så vel som bokstavelige verdier i ethvert uttrykk i SQL-spørringene dine.
- Du kan også bruke lengdefunksjonen med numeriske verdier for å få lengden på den numeriske verdien.
- UPPER og LOWER returnerer nullverdier hvis du sender en nullverdi til dem.
- SUBSTR-funksjonen returnerer et spesifikt antall strenger, fra en bestemt posisjon.
- REPLACE brukes til å erstatte hver streng som oppstod på en annen streng med en streng.
- TRIM fjerner tomme mellomrom fra begynnelsen eller slutten av strengen.
- ABS-funksjonen returnerer den absolutte verdien av en numerisk verdi.
- ROUND(X) konverterer desimalverdiene eller kolonnene X til bare heltall.
- TYPEOF(X)-funksjonen, fra navnet, returnerer datatypen til uttrykket X.
- LAST_INSERT_ROWID()-funksjonen returnerer ROW_ID for den sist innsatte raden i en hvilken som helst tabell i databasen.