SQLite Stringfuncties: REPLACE, SUBSTR, TRIM, LENGTH
โก Slimme samenvatting
SQLite Stringfuncties zoals LENGTH, SUBSTR, REPLACE en TRIM manipuleren tekst direct binnen query's, terwijl numerieke hulpfuncties zoals ABS en ROUND, plus TYPEOF en versiehulpfuncties, de mogelijkheden van de query's uitbreiden. SQLite De bibliotheek presteert.

Hoe instellen SQLite en Stringfunctiequery's uitvoeren
SQLite is standaard uitgerust met een lijst met ingebouwde functies binnen de SQLite bibliotheek. U kunt ook enkele andere aangepaste functies toevoegen met behulp van de C-taal om de kernfuncties uit te breiden.
Houd er rekening mee dat u voor alle volgende voorbeelden sqlite3.exe moet uitvoeren en een verbinding met de voorbeelddatabase moet openen zoals hieronder beschreven:
Stap 1) Open in deze stap Deze computer en navigeer naar de volgende map: โC:\sqliteโ. Open vervolgens โsqlite3.exeโ.
Stap 2) Open de database โTutorialsSampleDB.dbโ met het volgende commando:
Nu bent u klaar om elk programma uit te voeren vraag en probeer alle query's die in de volgende secties worden gebruikt.
De LENGTE van een string zoeken in SQLite
Om de lengte van een string te vinden, gebruik je LENGTH(X), waarbij X een stringwaarde is. Als X een nulwaarde is, retourneert de lengtefunctie een nulwaarde.
U kunt ook de lengtefunctie met numerieke waarden gebruiken om de lengte van de numerieke waarde te verkrijgen.
Voorbeeld:
In het volgende voorbeeld proberen we de syntaxis van de LENGTH-functie met de volgende waarden:
SELECT LENGTH('A string'), LENGTH(NULL), LENGTH(20), LENGTH(20.5);
Dit geeft je:
Het resultaat is als volgt:
- LENGTE('A string') retourneert 8, wat de lengte is van de string โA stringโ.
- LENGTE(NULL) retourneert nul.
- LENGTE(20) retourneert 2, omdat 20 2 lengtes lang is.
- LENGTH(20.5) retourneert 4; De drijvende komma โ.โ wordt geteld als een teken, dus u hebt vier tekens โ de 3 tekens die de lengte van de getallen vormen. Plus nog een teken voor de drijvende komma โ.โ.
Wisselkast met UPPER-functie en LOWER-functie
UPPER(X) retourneert dezelfde x-tekenreeks, maar vertegenwoordigt alle tekenreekstekens in hoofdletters.
LOWER(X) retourneert dezelfde x-tekenreeks, maar vertegenwoordigt alle tekenreekstekens in kleine tekens.
UPPER en LOWER retourneren nulwaarden als u er een nulwaarde aan doorgeeft.
Als u numerieke waarden doorgeeft aan UPPER of LOWER, retourneren beide de exacte numerieke waarde.
Voorbeeld:
SELECT UPPER('a string'), LOWER('A STRING'), UPPER(20), LOWER(20), UPPER(NULL), LOWER(NULL);
Dit geeft je:
Het resultaat is als volgt:
- UPPER('a string') retourneert de tekenreeks "a string" in hoofdletterweergave: "A STRING".
- LOWER('A STRING') geeft de tekenreeks "A STRING" terug in kleine letters: "a string".
- UPPER(20), LOWER(20) retourneren hetzelfde getal, omdat ze geen effect hebben op getallen.
- UPPER(NULL), LOWER(NULL) retourneert null omdat we er een null-waarde aan hebben doorgegeven.
SQLite SUBSTR-functie
De SUBSTR-functie retourneert een specifiek aantal tekens, beginnend vanaf een specifieke positie. Je kunt drie operanden aan de functie doorgeven, zoals in het volgende voorbeeld: โSUBSTR(X,Y,Z)โ.
- X is de letterlijke tekenreeks of de tekenreekskolom die moet worden geparseerd. U kunt een letterlijke waarde (statische waarde) of een kolomnaam doorgeven. In dit geval wordt de waarde gelezen uit de waarden van de kolom.
- Y is de startpositie om te extract de string die ermee begint.
- Z is het aantal tekens dat moet worden ontleed vanaf de specifieke positie Y. Dit getal is optioneel, u kunt het negeren, en in dit geval: SQLite zal extracGeef het einde van de tekenreeks aan, beginnend bij positie Y.
Voorbeeld:
In de volgende query gebruiken we de SUBSTR-functie om de 4 tekens op te halen, te beginnen bij het tweede teken van de namen van de studenten:
SELECT StudentName, SUBSTR(StudentName, 2, 4), SUBSTR(StudentName, 2) FROM Students;
Dit geeft je:
- SUBSTR(StudentName, 2, 4) haalt een deel van de tekenreeks "StudentName" op vanaf het tweede teken en geeft de volgende 4 tekens terug.
- In de functie SUBSTR(StudentName, 2) hebben we echter geen getal opgegeven voor het aantal tekens dat moet worden geretourneerd, daarom SQLite Alle resterende tekens in "StudentName" werden geretourneerd, beginnend bij de tweede positie.
Het wijzigen van delen van een string met SQLite VERVANG Functie
REPLACE wordt gebruikt om elke string die op een andere string voorkomt, te vervangen door een string.
REPLACE(X, Y, Z) โ X is de letterlijke invoertekenreeks of kolom. Y is de tekenreeks die moet worden vervangen door de tekenreeks Z. Merk op dat hiermee elk voorkomen van de tekenreeks Y wordt vervangen door Z, en niet slechts รฉรฉn.
Voorbeeld:
In de volgende query vervangen we alle voorkomende instanties van de tekenreeks "xx" door de tekenreeks "SQLite"
SELECT REPLACE('xx is very lightweight, xx is easy to learn', 'xx', 'SQLite');
Dit geeft je
- De vervangingsfunctie verving alle tekenreeksen "xx" door de tekenreeks "SQLite'.
- De uitvoer zal dus zijn:SQLite is zeer licht van gewicht, SQLite is gemakkelijk te lerenโ.
Lege ruimtes inkorten met SQLite TRIM-functie
TRIM verwijder spaties aan het begin of einde van de string. Er worden geen spaties in het midden van de string verwijderd, alleen vanaf het begin of vanaf het einde.
Voorbeeld:
In de volgende query gebruiken we de TRIM-functie om de spaties aan het begin en einde van de tekenreeks te verwijderen.
Let op dat de concatenatie-operator โ||โ wordt gebruikt om een โโextra โ;โ aan het einde van de string toe te voegen. Om u te laten zien dat de lege ruimtes in het zwarte venster zijn verwijderd.
SELECT TRIM(' SQLite is easy to learn ') || ';';
Dit geeft je:
Merk op hoe de lege spaties aan het begin en aan het einde van de string zijn verwijderd en vervangen door ' ; ' aan het einde.
Absolute waarden lezen met SQLite ABS-functie
De ABS-functie retourneert de absolute waarde van een numerieke waarde. De absolute waarde is de numerieke waarde zonder positief of negatief teken. ABS(X) retourneert een waarde afhankelijk van de waarde van X als volgt:
- De absolute waarde van X als X een numerieke waarde is.
- Een NULL-waarde als X een nulwaarde is.
- Waarde โ0.0โ als X een string is.
Voorbeeld:
In de volgende query proberen we de absolute waarde van een tekenreeks, een getal en een null-waarde te verkrijgen met behulp van de ABS-functie:
SELECT ABS(-2), ABS(+2), ABS('a string'), ABS(null);
Dit geeft je:
De resultaten zijn als volgt:
- ABS(-2), ABS(+2) retourneert 2, omdat 2 de absolute waarde is voor zowel โ-2โ als โ+2โ.
- ABS('een tekenreeks') retourneert '0.0' omdat u een tekenreekswaarde hebt doorgegeven en geen numerieke waarde.
- ABS(null) retourneert null omdat u er een null-waarde voor hebt opgegeven.
Waarden afronden met de functie ROUND in SQLite
Decimale getallen zijn getallen met een drijvende komma โ.โ erop, bijvoorbeeld โ20.5โ, โ8.65โ. Het gedeelte links van de drijvende komma wordt het gehele deel genoemd, en het gedeelte rechts van de drijvende komma is het decimale deel.
Gehele getallen zijn getallen zonder drijvende komma. Bijvoorbeeld, โ20โ, โ8โ.
ROUND(X) converteert de decimale waarden of kolommen X alleen naar gehele getallen. Het gehele deel dat het deel links van de decimale punt is, wordt geretourneerd en alle cijfers rechts van de decimale punt worden verwijderd.
Voorbeeld:
In de volgende query zullen we de functie ROUND met verschillende opties uitproberen:
SELECT ROUND(12.4354354), ROUND(12.4354354, 2), ROUND(NULL), ROUND('a string');
Dit geeft je:
Het resultaat is als volgt:
- ROUND(12.4354354) โ retourneert de waarde โ12โ, omdat u het aantal cijfers niet heeft opgegeven. Dus, SQLite het gehele decimale deel verwijderd.
- RONDE(12.4354354, 2) โ retourneert de waarde โ12.44โ, omdat u slechts 2 cijfers heeft opgegeven om af te ronden, dit zijn de twee cijfers vanaf de rechterkant van de komma.
- ROUND(NULL) โ retourneert null omdat u er een nulwaarde aan heeft doorgegeven.
- ROUND('een string') โ retourneert de waarde โ0.0โ omdat je er een stringwaarde aan hebt doorgegeven.
Het gegevenstype van de expressie zoeken met de TYPEOF-functie
Als u het type van een kolom of een letterlijke waarde wilt achterhalen, kunt u daarvoor de functie TYPEOF gebruiken.
De functie TYPEOF(X) retourneert, op basis van zijn naam, het gegevenstype van de uitdrukking X. Het retourneert een tekenreekswaarde die het gegevenstype van X aangeeft. Het retourneert de waarde op basis van de gegevenstypen, ongeacht of het een โNULLโ-waarde is, echt, tekst, geheel getal, โฆ, enz.
Voorbeeld:
In de volgende query zullen we de TYPEOF-functie uitproberen met verschillende typen letterlijke waarden:
SELECT TYPEOF(null), TYPEOF(12), TYPEOF(12.5), TYPEOF('a string');
Dit geeft je:
De geretourneerde resultaten zijn als volgt:
- TYPEOF(null) โ retourneert null omdat u er een null-waarde aan hebt doorgegeven.
- TYPEOF(12) โ retourneert een geheel getal omdat 12 een geheel getal is.
- TYPEOF(12.5) โ retourneert REAL omdat 12.5 een reรซel getal is.
- TYPEOF('een string') โ retourneert tekst omdat โeen stringโ een tekst is.
Het laatst ingevoegde record zoeken met SQLite LAST_INSERT_ROWID
SQLite wijst een geheel getalsleutel (Id) toe aan alle rijen in alle tabellen. Dit nummer wordt gebruikt om deze rijen uniek te identificeren.
Wanneer u een nieuwe rij invoegt in een tabel, SQLite zal de rowid een unieke waarde toekennen.
Als de tabel een primaire sleutel heeft die slechts voor รฉรฉn kolom is gedeclareerd en die kolom van het gegevenstype INTEGER is, wordt deze kolomwaarde gebruikt als rowid.
De functie LAST_INSERT_ROWID() retourneert de ROW_ID van de laatste ingevoegde rij in een willekeurige tabel in de database. Let op: deze functie gebruikt geen operand.
Voorbeeld:
In het volgende voorbeeld voeren we de functie LAST_INSERT_ROWID() als volgt uit:
SELECT LAST_INSERT_ROWID();
Dit geeft je:
LAST_INSERT_ROWID() retourneert 0 omdat er geen rijen zijn ingevoegd in tabellen in de huidige databaseverbinding.
Laten we nu een nieuwe leerling invoegen en de functie LAST_INSERT_ROWID() opnieuw uitvoeren na de insert-instructie, zoals deze:
INSERT INTO Students VALUES(11, 'guru', 1, '1998-10-12'); SELECT LAST_INSERT_ROWID();
Dit geeft je:
Nadat we een nieuwe leerling met id 11 hebben ingevoegd, retourneert LAST_INSERT_ROWID() de laatst ingevoegde rij-id, namelijk 11.
De versie van uw SQLite
Om de versie van uw SQLite bibliotheek, moet u de functie SQLITE_VERSION() aanroepen.
Voorbeeld:
Laten we eens kijken wat de versie is van de SQLite we gebruiken door de volgende opdracht uit te voeren:
SELECT SQLITE_VERSION();
Dit geeft je:
SQLITE_VERSION() retourneert 3.9.2, wat de versie is van de SQLite wij gebruiken.
Door de gebruiker gedefinieerde functies maken en door de gebruiker gedefinieerde functies aggregeren
Voor sommige gebruikers is de SQLite kernfuncties zijn beperkt. Mogelijk moeten ze aangepaste functies toevoegen voor hun aangepaste behoeften.
SQLite biedt geen ondersteuning voor het maken van door de gebruiker gedefinieerde functies. In tegenstelling tot andere databasebeheersystemen kunt u geen door de gebruiker gedefinieerde functies maken SQLite direct.
Je kunt echter een functie maken met behulp van programmeertalen zoals C#, C, PHP, of C++ en koppelde die functie aan de kern SQLite functies in de SQLite Je kunt de bibliotheek zelf gebruiken met de functie "sqlite3_create_function". Vervolgens kun je ze hergebruiken in je eigen database.
Voorbeeld:
In het volgende voorbeeld maken we een door de gebruiker gedefinieerde functie met behulp van de programmeertaal C# en voegen we deze toe aan... SQLite functies:
[SQLiteFunction(Name = "DoubleValue", Arguments = 1, FuncType = FunctionType.Scalar)] public class DoubleValue: SQLiteFunction { public override object Invoke(object[] args) { return args[0] * 2; } }
Dit codefragment is geschreven in de C# programmeertaal; het creรซert een C#-functie met behulp van de C#-code.
De functienaam zal zijn โDoubleDe functie "Value" neemt รฉรฉn parameter en retourneert de waarde ervan vermenigvuldigd met 2.
Merk op dat C# deze functie automatisch toevoegt SQLite. Het enige dat u nodig hebt, is deze code compileren en uitvoeren. Vervolgens zal C# die functie met dezelfde naam toevoegen aan de lijst met SQLite functies. Dan kun je deze functie gebruiken SQLite.
Op dezelfde manier gebruik je programmeertalen zoals C#, C, PHP of C++, kunt u ook geaggregeerde, door de gebruiker gedefinieerde functies maken. Die worden gebruikt om de aggregatiefuncties uit te breiden SQLite en gebruik ze om aangepaste aggregatiefuncties te maken.













