SQLite Snaarfuncties: REPLACE, SUBSTR, TRIM, ROUND

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 onderstaande voorbeelden sqlite3.exe moet uitvoeren en een verbinding met de voorbeeld-database moet openen als volgt:

Stap 1) In deze stap,

  1. Open Deze computer en navigeer naar de volgende map:C:\sqlite" en toen
  2. open "sqlite3.exe"

SQLite String-functies

Stap 2) Open de databank “ZelfstudiesSampleDB.db" door het volgende commando:

SQLite String-functies

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:

De LENGTE van een string zoeken in SQLite

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:

Voorbeeld van UPPER- en LOWER-functies in SQLite

Het resultaat is als volgt:

  • UPPER('een tekenreeks') retourneert de tekenreeks “een draad” in hoofdletterweergave “EEN DRAAD'.
  • LOWER('A STRING') retourneert de tekenreeks “EEN DRAAD” in kleine letterweergave “een draad'.
  • 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 strings, beginnend bij een specifieke positie. U kunt drie operanden aan de functie doorgeven, zoals deze "SUBSTR(X,Y,Z)"als volgt:

  • 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 de string vanaf daar af te trekken.
  • 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 de string aftrekken vanaf de positie Y en het einde van de string vertellen.

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:

Voorbeeld van de SUBSTR-functie in SQLite

  • SUBSTR(Naam leerling, 2, 4) substring de tekenreeks “Studenten naam” beginnend bij het tweede teken, en retourneer de volgende 4 tekens.
  • Echter, in de functie SUBSTR(Naam leerling, 2) we hebben geen nummer opgegeven voor de tekens die moeten worden geretourneerd, daarom SQLite retourneerde alle resterende tekens in de “Studenten naam”vanaf 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 voorkomens van de string “xx” met de tekenreeks “SQLite"

SELECT REPLACE('xx is very lightweight, xx is easy to learn', 'xx', 'SQLite');

Dit geeft je

Voorbeeld van de REPLACE-functie in SQLite

  • De vervangingsfunctie heeft alle strings vervangen “xx” met de tekenreeks “SQLite'.
  • De output 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:

Voorbeeld van TRIM-functie in SQLite

  • 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:

Voorbeeld van ABS-functie in SQLite

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:

Voorbeeld van de functie RONDE in SQLite

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:

Voorbeeld van de TYPEOF-functie in SQLite

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:

Voorbeeld van de functie LAST_INSERT_ROWID in SQLite

  • 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:

Voorbeeld van de functie LAST_INSERT_ROWID in SQLite

  • 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 bibliotheek

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:

Voorbeeld om de versie van uw SQLite bibliotheek

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.

U kunt echter een functie maken met programmeertalen zoals C#, C, PHP of C++ en koppelde die functie aan de kern SQLite functies in de SQLite bibliotheek zelf, met behulp van “sqlite3_create_functie” functie. Vervolgens kunt u ze opnieuw gebruiken in uw database.

Voorbeeld:

In het volgende voorbeeld maken we een door de gebruiker gedefinieerde functie met behulp van C# programmeertaal en voeg deze toe 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 “DoubleWaardeEr is één parameter nodig en de waarde wordt vermenigvuldigd met 2 geretourneerd.

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.

Samenvatting

  • SQLite biedt een uitgebreide reeks ingebouwde functies die het werken met databasetabellen en -kolommen eenvoudig maken, zoals we zagen. U kunt deze functies gebruiken met zowel kolommen als letterlijke waarden binnen elke expressie in uw SQL-query's.
  • U kunt ook de lengtefunctie met numerieke waarden gebruiken om de lengte van de numerieke waarde te verkrijgen.
  • UPPER en LOWER retourneren nulwaarden als u er een nulwaarde aan doorgeeft.
  • De functie SUBSTR retourneert een specifiek aantal tekenreeksen, beginnend vanaf een specifieke positie.
  • REPLACE wordt gebruikt om elke string die op een andere string voorkomt, te vervangen door een string.
  • TRIM verwijdert spaties aan het begin of einde van de tekenreeks.
  • De ABS-functie retourneert de absolute waarde van een numerieke waarde.
  • ROUND(X) converteert de decimale waarden of kolommen X alleen naar gehele getallen.
  • De functie TYPEOF(X) retourneert, op basis van zijn naam, het gegevenstype van de uitdrukking X.
  • De functie LAST_INSERT_ROWID() retourneert de ROW_ID van de laatst ingevoegde rij in een tabel in de database.