SQLite String-functies: 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.

Merk op dat, voor al het vervolgwing Voorbeelden: u moet sqlite3.exe uitvoeren en een verbinding met de voorbeelddatabase openen als flowing:

Stap 1) In deze stap,

  1. Open Deze computer en navigeer naar het volgendewing map “C:\sqlite" en toen
  2. open "sqlite3.exe"

SQLite-tekenreeksfuncties

Stap 2) Open de databank “ZelfstudiesSampleDB.db'door de volgendewing opdracht:

SQLite-tekenreeksfuncties

Nu bent u klaar om elk programma uit te voeren vraag en probeer alle zoekopdrachten die in het volgende worden gebruiktwing secties.

De LENGTE van een string vinden 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 vervolgwing We zullen bijvoorbeeld de syntaxis van de functie LENGTH proberen met waarden als volgtwing:

SELECT LENGTH('A string'), LENGTH(NULL), LENGTH(20), LENGTH(20.5);

Dit geeft je:

De LENGTE van een string vinden in SQLite

Het resultaat is als volgtwing:

  • 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.
  • LENGTE(20.5) retourneert 4; Het drijvende komma “.” wordt geteld als een teken, dus je hebt vier tekens – de 3 tekens die de lengte van de cijfers zijn. 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 volgtwing:

  • 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) retourneert hetzelfde getal, omdat ze geen enkel effect hebben op getallen.
  • UPPER(NULL), LOWER(NULL) retourneert null omdat we er een null-waarde aan hebben doorgegeven.

SQLite SUBSTR-functie

De functie SUBSTR retourneert een specifiek aantal tekenreeksen, beginnend vanaf een specifieke positie. Je kunt drie operanden doorgeven aan de functie, zoals deze “SUBSTR(X,Y,Z)”als volgtwing:

  • 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 het vervolgwing query gebruiken we de functie SUBSTR om de 4 tekens te krijgen, beginnend bij het tweede teken uit de namen van de leerlingen:

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 retourneert SQLite alle resterende tekens in de “Studenten naam”vanaf de tweede positie.

Delen van een string wijzigen met de SQLite REPLACE-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 het vervolgwing query, zullen we alle exemplaren 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 heel licht, SQLite is gemakkelijk te leren”.

Lege spaties bijsnijden met de 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 het vervolgwing query gebruiken we de TRIM-functie om de lege spaties aan het begin en het einde van de string te verwijderen.

Houd er rekening mee dat de concatenatieoperator “||” wordt gebruikt om een ​​extra “;” toe te voegen tot het einde van de reeks. Om je 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 enig positief of negatief teken. ABS(X) retourneert een waarde afhankelijk van de waarde van X, als volgtwing:

  • 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 het vervolgwing query, zullen we proberen de absolute waarde van een string, een getal en een nulwaarde 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 als volgtwing:

  • 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 ROUND-functie in SQLite

Decimale getallen zijn getallen met een drijvende komma “.” erop, bijvoorbeeld “20.5”, “8.65”. Het deel aan de linkerkant van de drijvende komma wordt het gehele deel genoemd, en het deel aan de rechterkant 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 naar uitsluitend gehele getallen. Het gehele deel dat het deel links van de komma is, wordt geretourneerd en alle cijfers rechts van de komma worden verwijderd.

Voorbeeld:

In het vervolgwing query zullen we de RONDE functie proberen met verschillende opties:

SELECT ROUND(12.4354354), ROUND(12.4354354, 2), ROUND(NULL), ROUND('a string');

Dit geeft je:

Voorbeeld van de ROUND-functie in SQLite

Het resultaat als volgtwing:

  • ROUND(12.4354354) – retourneert de waarde “12”, omdat u het aantal cijfers niet heeft opgegeven. SQLite heeft dus al het decimale gedeelte 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 het vervolgwing query zullen we de TYPEOF-functie proberen met verschillende soorten 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 volgtwing:

  • 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 in een tabel INSERT, wijst SQLite de rowid een unieke waarde toe.

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 laatst ingevoegde rij in een tabel in de database. Merk op dat er geen operand nodig is.

Voorbeeld:

In het vervolgwing We zullen bijvoorbeeld de functie LAST_INSERT_ROWID() als volgt uitvoeren:

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 ophalen

Om de versie van uw SQLite-bibliotheek te verkrijgen, moet u de functie SQLITE_VERSION() aanroepen.

Voorbeeld:

Laten we uitvinden wat de versie is van de SQLite die we gebruiken door het volgende uit te voerenwing opdracht:

SELECT SQLITE_VERSION();

Dit geeft je:

Voorbeeld om de versie van uw SQLite-bibliotheek op te halen

SQLITE_VERSION() retourneert 3.9.2, de versie van de SQLite die we gebruiken.

Door de gebruiker gedefinieerde functies maken en door de gebruiker gedefinieerde functies aggregeren

Voor sommige gebruikers zijn de kernfuncties van SQLite 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 niet rechtstreeks door de gebruiker gedefinieerde functies in SQLite maken.

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

Voorbeeld:

In het vervolgwing We zullen bijvoorbeeld een door de gebruiker gedefinieerde functie maken met behulp van C# programmeertaal en voeg 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 “dubbele waardeEr is één parameter nodig en de waarde wordt vermenigvuldigd met 2 geretourneerd.

Merk op dat C# deze functie automatisch aan SQLite toevoegt. Het enige dat u nodig hebt, is deze code compileren en uitvoeren. Vervolgens voegt C# die functie met dezelfde naam toe aan de lijst met SQLite-functies. Dan kunt u deze functie gebruiken in SQLite.

Op dezelfde manier kunt u met programmeertalen zoals C#, C, PHP of C++ ook geaggregeerde, door de gebruiker gedefinieerde functies maken. Deze worden gebruikt om de aggregatiefuncties in SQLite uit te breiden en te gebruiken om aangepaste aggregatiefuncties te maken.

Samengevat

  • SQLite biedt een uitgebreide set 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 naar uitsluitend 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.