SQLite Funkcije niza: REPLACE, SUBSTR, TRIM, ROUND
SQLite je prema zadanim postavkama opremljen popisom ugrađenih funkcija unutar SQLite knjižnica. Također možete dodati neke druge prilagođene funkcije pomoću jezika C kako biste proširili osnovne funkcije.
Imajte na umu da za sve sljedeće primjere morate pokrenuti sqlite3.exe i otvoriti vezu s oglednom bazom podataka kao protočnu:
Korak 1) U ovom koraku
- Otvorite Moje računalo i dođite do sljedećeg direktorija "C:\sqlite" i onda
- otvoren "sqlite3.exe"
Korak 2) Otvori bazu podataka “TutorialsSampleDB.db” sljedećom naredbom:
Sada ste spremni pokrenuti bilo koji pitanje i isprobajte sve upite korištene u sljedećim odjeljcima.
Traženje LENGTH niza u SQLite
Da biste pronašli duljinu niza, koristite LENGTH(X) gdje je X vrijednost niza. Ako je X nulta vrijednost, funkcija duljine vratit će nultu vrijednost.
Također možete koristiti funkciju duljine s numeričkim vrijednostima da biste dobili duljinu numeričke vrijednosti.
Primjer:
U sljedećem primjeru isprobat ćemo sintaksu funkcije LENGTH sa sljedećim vrijednostima:
SELECT LENGTH('A string'), LENGTH(NULL), LENGTH(20), LENGTH(20.5);
Ovo će vam dati:
Rezultat je sljedeći:
- LENGTH('A string') vraća 8 što je duljina niza "A string".
- LENGTH(NULL) vraća null.
- LENGTH(20) vraća 2 jer je 20 dugačak 2 duljine.
- LENGTH(20.5) vraća 4; Pokretni zarez "." se računa kao znak, tako da ćete imati četiri znaka – 3 znaka koji su duljine brojeva. Plus još jedan znak za pokretni zarez “.”.
Mijenjanje velikih i malih slova pomoću funkcije UPPER i LOWER
UPPER(X) će vratiti isti x niz, ali će predstavljati sve znakove niza velikim slovima.
LOWER(X) će vratiti isti x niz, ali će sve znakove niza predstavljati malim znakovima.
UPPER i LOWER vraćaju nulte vrijednosti ako im proslijedite nultu vrijednost.
Ako proslijedite numeričke vrijednosti na UPPER ili LOWER, oba će vratiti točnu numeričku vrijednost.
Primjer:
SELECT UPPER('a string'), LOWER('A STRING'), UPPER(20), LOWER(20), UPPER(NULL), LOWER(NULL);
Ovo će vam dati:
Rezultat je sljedeći:
- UPPER('niz') vraća niz “žica"velikim slovima"ŽICA".
- LOWER('A STRING') vraća niz "ŽICA"prikaz malim slovom"žica".
- UPPER(20), LOWER(20) vraćaju isti broj jer nemaju nikakav učinak na brojeve.
- UPPER(NULL), LOWER(NULL) vraća null jer smo im proslijedili null vrijednost.
SQLite SUBSTR funkcija
SUBSTR funkcija vraća određeni broj niza, počevši od određene pozicije. Funkciji možete proslijediti tri operanda, ovako "SUBSTR(X,Y,Z)” kako slijedi:
- X je literal niza ili stupac niza za analizu. Možete proslijediti literalnu vrijednost (statičku vrijednost) ili naziv stupca, a u ovom slučaju vrijednost će se čitati iz vrijednosti stupca.
- Y je početna pozicija za oduzimanje niza koji počinje od nje.
- Z je broj znakova za raščlanjivanje počevši od određene pozicije Y. Ovaj broj nije obavezan, možete ga zanemariti, au ovom slučaju, SQLite će oduzeti niz počevši od pozicije Y reći kraj niza.
Primjer:
U sljedećem upitu koristit ćemo funkciju SUBSTR da dobijemo 4 znaka počevši od drugog znaka imena učenika:
SELECT StudentName, SUBSTR(StudentName, 2, 4), SUBSTR(StudentName, 2) FROM Students;
Ovo će vam dati:
- SUBSTR(Ime učenika, 2, 4) podniz niza "Ime studenta” počevši od drugog znaka i vrati sljedeća 4 znaka.
- Međutim, u funkciji SUBSTR(Ime učenika, 2) nismo naveli broj za znakove koji se vraćaju, zato SQLite vratio sve preostale znakove u "Ime studenta” počevši od druge pozicije.
Mijenjanje dijelova niza pomoću SQLite Funkcija REPLACE
REPLACE se koristi za zamjenu svakog niza koji se pojavio na drugom nizu nizom.
REPLACE(X, Y, Z) – X je literal ili stupac ulaznog niza. Y je niz koji treba zamijeniti nizom Z. Imajte na umu da će zamijeniti svako pojavljivanje niza Y sa Z, a ne samo jedno.
Primjer:
U sljedećem upitu zamijenit ćemo sva pojavljivanja niza "xx"sa nizom"SQLite"
SELECT REPLACE('xx is very lightweight, xx is easy to learn', 'xx', 'SQLite');
Ovo će vam dati
- Funkcija zamjene zamijenila je sve nizove "xx"sa nizom"SQLite".
- Dakle, izlaz će biti "SQLite vrlo je lagan, SQLite je lako naučiti”.
Obrezivanje praznih mjesta s SQLite TRIM funkcija
TRIM uklanja prazna mjesta s početka ili s kraja niza. Neće ukloniti razmake u sredini niza, samo s početka ili s kraja.
Primjer:
U sljedećem upitu koristit ćemo funkciju TRIM za uklanjanje praznina s početka i kraja niza.
Imajte na umu da operator ulančavanja “||” koristi se za dodavanje dodatnog ";" do kraja niza. Da vam pokažem da su prazna mjesta uklonjena u crnom prozoru.
SELECT TRIM(' SQLite is easy to learn ') || ';';
Ovo će vam dati:
- Primijetite kako su prazna mjesta uklonjena s početka i s kraja niza, zamijenjena s ' ; ' na kraju.
Čitanje apsolutnih vrijednosti s SQLite ABS funkcija
Funkcija ABS vraća apsolutnu vrijednost numeričke vrijednosti. Apsolutna vrijednost je brojčana vrijednost bez ikakvog pozitivnog ili negativnog predznaka. ABS(X) vraća vrijednost ovisno o vrijednosti X na sljedeći način:
- Apsolutna vrijednost X ako je X numerička vrijednost.
- NULL vrijednost ako je X nulta vrijednost.
- Vrijednost “0.0” ako je X niz.
Primjer:
U sljedećem upitu pokušat ćemo dobiti apsolutnu vrijednost niza, broja i nulte vrijednosti pomoću funkcije ABS:
SELECT ABS(-2), ABS(+2), ABS('a string'), ABS(null);
Ovo će vam dati:
Rezultati su sljedeći:
- ABS(-2), ABS(+2) vraća 2 jer je 2 apsolutna vrijednost i za “-2” i za “+2”.
- ABS('niz') vraća "0.0" jer ste proslijedili vrijednost niza, a ne numeričku vrijednost.
- ABS(null) vraća null jer ste mu proslijedili null vrijednost.
Zaokruživanje vrijednosti s funkcijom ROUND in SQLite
Decimalni brojevi su brojevi s pomičnim zarezom “.” na njemu, na primjer, "20.5", "8.65". Dio s lijeve strane pomičnog zareza naziva se cijeli broj, a dio s desne strane pomičnog zareza je decimalni dio.
Cijeli brojevi su oni brojevi bez pokretnog zareza. Na primjer, "20", "8".
ROUND(X) pretvara decimalne vrijednosti ili stupce X samo u cijele brojeve. Vratit će se cijeli broj koji je dio lijevo od decimalne točke, a sve znamenke desno od decimalne točke bit će uklonjene.
Primjer:
U sljedećem upitu isprobat ćemo funkciju ROUND s različitim opcijama:
SELECT ROUND(12.4354354), ROUND(12.4354354, 2), ROUND(NULL), ROUND('a string');
Ovo će vam dati:
Rezultat je sljedeći:
- ROUND(12.4354354) – vraća vrijednost “12”, jer niste naveli broj znamenki. Tako, SQLite uklonio sav decimalni dio.
- ROUND(12.4354354, 2) – vraća vrijednost "12.44", jer ste naveli samo 2 znamenke za zaokruživanje, a to su dvije znamenke s desne strane decimalne točke.
- ROUND(NULL) – vraća null jer ste mu proslijedili null vrijednost.
- ROUND('niz') – vraća vrijednost “0.0” jer ste mu proslijedili vrijednost niza.
Pronalaženje vrste podataka izraza pomoću funkcije TYPEOF
Ako želite saznati vrstu stupca ili literalnu vrijednost, možete to učiniti pomoću funkcije TYPEOF.
Funkcija TYPEOF(X) prema svom nazivu vraća tip podataka izraza X. Vraća vrijednost niza koja označava tip podataka X. Vraća vrijednost na temelju tipova podataka, bilo da se radi o vrijednosti "NULL", stvarni, tekst, cijeli broj, … itd.
Primjer:
U sljedećem upitu isprobat ćemo funkciju TYPEOF s različitim vrstama literalnih vrijednosti:
SELECT TYPEOF(null), TYPEOF(12), TYPEOF(12.5), TYPEOF('a string');
Ovo će vam dati:
Vraćeni rezultati su sljedeći:
- TYPEOF(null) – vraća null jer ste mu proslijedili null vrijednost.
- TYPEOF(12) – vraća cijeli broj jer je 12 cijeli broj.
- TYPEOF(12.5) – vraća REAL jer je 12.5 realan broj.
- TYPEOF('niz') – vraća tekst jer je "niz" tekst.
Pronalaženje posljednjeg umetnutog zapisa s SQLite LAST_INSERT_ROWID
SQLite dodjeljuje cjelobrojni ključ (Id) za sve retke u svim tablicama. Ovaj se broj koristi za jedinstvenu identifikaciju ovih redaka.
Kada UMETNETE novi red u tablici, SQLite dodijelit će rowid jedinstvenu vrijednost.
Ako tablica ima primarni ključ deklariran samo na jednom stupcu i taj je stupac tipa podataka INTEGER, tada će se vrijednost ovog stupca koristiti kao rowid.
Funkcija LAST_INSERT_ROWID() vraća ROW_ID zadnjeg umetnutog retka u bilo kojoj tablici u bazi podataka. Imajte na umu da ne uzima nikakav operand.
Primjer:
U sljedećem primjeru pokrenut ćemo funkciju LAST_INSERT_ROWID() na sljedeći način:
SELECT LAST_INSERT_ROWID();
Ovo će vam dati:
- LAST_INSERT_ROWID() vraća 0 jer nema redaka umetnutih ni u jednu tablicu u trenutnoj vezi baze podataka.
Umetnimo sada novog učenika i ponovo pokrenimo funkciju LAST_INSERT_ROWID() nakon naredbe za umetanje, ovako:
INSERT INTO Students VALUES(11, 'guru', 1, '1998-10-12'); SELECT LAST_INSERT_ROWID();
Ovo će vam dati:
- Nakon što smo umetnuli novog učenika s ID-om 11, LAST_INSERT_ROWID() će vratiti zadnji umetnuti ID retka koji je 11.
Dobivanje vaše verzije SQLite knjižnica
Da biste dobili svoju verziju SQLite knjižnici, morate pozvati funkciju SQLITE_VERSION().
Primjer:
Otkrijmo koja je verzija SQLite koristimo pokretanjem sljedeće naredbe:
SELECT SQLITE_VERSION();
Ovo će vam dati:
SQLITE_VERSION() vraća 3.9.2 što je verzija SQLite mi koristimo.
Stvaranje korisnički definiranih funkcija i agregatnih korisnički definiranih funkcija
Za neke korisnike, SQLite osnovne funkcije su ograničene. Možda će morati dodati prilagođene funkcije za svoje prilagođene potrebe.
SQLite ne podržava stvaranje korisnički definiranih funkcija. Za razliku od drugih sustava za upravljanje bazom podataka, ne možete kreirati korisnički definirane funkcije u SQLite direktno.
Međutim, možete izraditi funkciju pomoću programskih jezika kao što su C#, C, PHP ili C++ i pričvrstio tu funkciju s jezgrom SQLite funkcije u SQLite sama biblioteka, koristeći "sqlite3_create_funkcija” funkcija. Tada ih možete ponovno koristiti u svojoj bazi podataka.
Primjer:
U sljedećem primjeru izradit ćemo korisnički definiranu funkciju pomoću C# programski jezik i dodajte ga SQLite funkcije:
[SQLiteFunction(Name = "DoubleValue", Arguments = 1, FuncType = FunctionType.Scalar)] public class DoubleValue: SQLiteFunction { public override object Invoke(object[] args) { return args[0] * 2; } }
Ovaj isječak koda napisan je u Programski jezik C#; stvara C# funkciju pomoću C# koda.
Naziv funkcije bit će "DoubleJoš malo brojeva” uzima jedan parametar i vraća njegovu vrijednost pomnoženu s 2.
Imajte na umu da C# automatski dodaje ovu funkciju u SQLite. Sve što trebate je kompajlirati i pokrenuti ovaj kod. Tada će C# dodati tu funkciju s istim imenom na popis SQLite funkcije. Tada možete koristiti ovu funkciju u SQLite.
Na isti način korištenjem programskih jezika poput C#, C, PHP ili C++, također možete stvoriti agregatne korisnički definirane funkcije. Koje se koriste za proširenje agregatnih funkcija u SQLite i koristiti ih za stvaranje prilagođenih agregatnih funkcija.
Rezime
- SQLite pruža opsežan skup ugrađenih funkcija koje olakšavaju rad s tablicama i stupcima baze podataka kao što smo vidjeli. Ove funkcije možete koristiti sa stupcima kao i literalnim vrijednostima unutar bilo kojeg izraza u svojim SQL upitima.
- Također možete koristiti funkciju duljine s numeričkim vrijednostima da biste dobili duljinu numeričke vrijednosti.
- UPPER i LOWER vraćaju nulte vrijednosti ako im proslijedite nultu vrijednost.
- SUBSTR funkcija vraća određeni broj niza, počevši od određene pozicije.
- REPLACE se koristi za zamjenu svakog niza koji se pojavio na drugom nizu nizom.
- TRIM uklanja prazna mjesta s početka ili s kraja niza.
- Funkcija ABS vraća apsolutnu vrijednost numeričke vrijednosti.
- ROUND(X) pretvara decimalne vrijednosti ili stupce X samo u cijele brojeve.
- Funkcija TYPEOF(X), prema svom nazivu, vraća tip podataka izraza X.
- Funkcija LAST_INSERT_ROWID() vraća ROW_ID zadnjeg umetnutog retka u bilo kojoj tablici u bazi podataka.