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.

  • ๐Ÿ“ Lengte: De LENGTH-functie telt hoeveel tekens een tekenreeks bevat en retourneert null als de doorgegeven waarde null is.
  • ๐Ÿ”  Omrekening van hoofdletters en kleine letters: UPPER en LOWER zetten een tekenreeks om in hoofdletters of kleine letters, terwijl getallen en lege waarden ongewijzigd blijven.
  • โœ‚๏ธ Subtekenreeksen: SUBSTR extracREPLACE vervangt tekens vanaf een gekozen positie, terwijl REPLACE elke voorkomende instantie van een substring vervangt door een andere.
  • ๐Ÿงฎ Numerieke hulpmiddelen: ABS geeft een waarde zonder teken terug, en ROUND kort een decimaal getal in tot het door u gewenste aantal decimalen.
  • ๐Ÿ” Rioolbuis Inspectie: TYPEOF rapporteert het gegevenstype van een expressie, en LAST_INSERT_ROWID retourneert de id van de laatst ingevoegde rij.
  • ๐Ÿค– AI-assistentie: GitHub Copilot en AI-tools voor tekst-naar-SQL-conversie vormen de basis. SQLite Functiequery's, terwijl aangepaste C-functies de ingebouwde bibliotheek uitbreiden.

SQLite String-functies

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โ€.

SQLite String-functies

Stap 2) Open de database โ€œTutorialsSampleDB.dbโ€ met 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('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:

Voorbeeld van de SUBSTR-functie in SQLite

  • 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

Voorbeeld van de REPLACE-functie in SQLite

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

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

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 te verkrijgen SQLite

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.

Veelgestelde vragen

Scalaire functies zoals LENGTH, UPPER en ROUND worden รฉรฉn keer per rij uitgevoerd en retourneren elk รฉรฉn waarde. Aggregatiefuncties zoals COUNT, SUM en GROUP_CONCAT verwerken meerdere rijen tegelijk en retourneren รฉรฉn gecombineerd resultaat voor de hele groep.

SQLite Voegt tekenreeksen samen met de operator ||, bijvoorbeeld 'a' || 'b'. Nieuwere versies voegen ook de scalaire functies concat() en concat_ws() toe, terwijl group_concat() waarden uit meerdere rijen combineert tot รฉรฉn door scheidingstekens gescheiden tekenreeks.

Ja. SQLite Deze functies bieden DATE, TIME, DATETIME, JULIANDAY en STRFTIME. Ze formatteren en berekenen datums vanuit tekst, Unix-timestamps of de speciale waarde 'now', aangezien SQLite Slaat datums op als TEXT, REAL of INTEGER in plaats van een specifiek gegevenstype.

Standaard veranderen UPPER en LOWER alleen de ASCII-letters A tot en met Z, dus tekens met accenten of niet-Latijnse tekens blijven ongewijzigd. Volledige Unicode-conversie vereist dat de ICU-extensie is gecompileerd. SQLite, wat maar weinig standaard builds bevatten.

Gebruik de functie INSTR(X, Y), die de eerste positie van substring Y binnen string X retourneert, tellend vanaf 1. De functie retourneert 0 als de substring afwezig is. Combineer INSTR met SUBSTR om...tract tekst na een overeenkomend teken.

Om de expressie te vervangen door IFNULL(X, fallback) of COALESCE(X, fallback) wanneer een functie null retourneert, kunt u een standaardwaarde gebruiken. COALESCE accepteert meerdere argumenten en retourneert de eerste waarde die niet null is. Dit is handig wanneer veel kolommen leeg kunnen zijn.

Ja. GitHub-copiloot Het programma suggereert LENGTH-, SUBSTR-, REPLACE- en ROUND-aanroepen op basis van een opmerking of tabelnaam, en genereert door de gebruiker gedefinieerde functiecode in C of C#. Test de uitvoer altijd aan de hand van uw schema, omdat het programma kolomnamen kan verzinnen.

Ja. AI-assistenten die tekst naar SQL converteren, zetten verzoeken in gewone taal om in SQLite query's die gebruikmaken van tekenreeksfuncties zoals TRIM en REPLACE. Ze versnellen prototy.pingToch moet je de gegenereerde SQL-query's controleren aan de hand van je eigen gegevens, omdat machine learning-modellen soms onjuiste logica produceren.

Vat dit bericht samen met: