SQLite Strängfunktioner: REPLACE, SUBSTR, TRIM, LENGTH

⚡ Smart sammanfattning

SQLite Strängfunktioner som LENGTH, SUBSTR, REPLACE och TRIM manipulerar text direkt inuti frågor, medan numeriska hjälpfunktioner som ABS och ROUND, plus TYPEOF- och versionshjälpfunktioner, utökar vad SQLite biblioteket uppträder.

  • 📏 Längd: Funktionen LENGTH räknar hur många tecken en sträng innehåller och returnerar null när det skickade värdet är null.
  • 🔠 Fallkonvertering: UPPER och LOWER växlar en sträng till versaler eller små bokstäver, vilket lämnar siffror och nullvärden oförändrade.
  • ✂️ Delsträngar: SUBSTR extracts-tecken från en vald position, medan REPLACE byter ut varje förekomst av en delsträng mot en annan.
  • 🧮 Numeriska hjälpmedel: ABS returnerar ett värde utan dess tecken, och ROUND förkortar ett decimaltal till de siffror du begär.
  • 🔍 Kontroll: TYPEOF rapporterar datatypen för ett uttryck, och LAST_INSERT_ROWID returnerar ID:t för den senast infogade raden.
  • 🤖 AI-hjälp: GitHub Copilot och AI text-till-SQL-verktygsstativ SQLite funktionsfrågor, medan anpassade C-funktioner utökar det inbyggda biblioteket.

SQLite Strängfunktioner

Hur du ställer in SQLite och kör strängfunktionsfrågor

SQLite är som standard utrustad med en lista med inbyggda funktioner i SQLite bibliotek. Du kan också lägga till några andra anpassade funktioner med C-språket för att utöka kärnfunktionerna.

Observera att du för alla följande exempel måste köra sqlite3.exe och öppna en anslutning till exempeldatabasen enligt följande:

Steg 1) I det här steget öppnar du Den här datorn och navigerar till följande katalog "C:\sqlite" och öppnar sedan "sqlite3.exe":

SQLite Strängfunktioner

Steg 2) Öppna databasen "TutorialsSampleDB.db" med följande kommando:

SQLite Strängfunktioner

Nu är du redo att köra vilken som helst fråga och prova alla frågor som används i följande avsnitt.

Hitta LENGTH av en sträng in SQLite

För att hitta längden på en sträng använd LENGTH(X) där X är ett strängvärde. Om X är ett nollvärde kommer längdfunktionen att returnera ett nollvärde.

Du kan också använda längdfunktionen med numeriska värden för att få längden på det numeriska värdet.

Exempel:

I följande exempel kommer vi att prova LENGTH-funktionens syntax med följande värden:

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

Detta ger dig:

Hitta LENGTH av en sträng in SQLite

Resultatet är följande:

  • LENGTH('En sträng') returnerar 8 vilket är längden på strängen "En sträng".
  • LENGTH(NULL) returnerar null.
  • LENGTH(20) returnerar 2, eftersom 20 är 2 längder långt.
  • LENGTH(20.5) returnerar 4; Flytpunkten "." räknas som ett tecken, så du kommer att ha fyra tecken – de 3 tecknen som är längden på siffrorna. Plus ett tecken till för flyttal ".".

Skötväska med UPPER-funktion och LOWER-funktion

UPPER(X) returnerar samma x-sträng, men den kommer att representera alla strängtecken med versaler.

LOWER(X) returnerar samma x-sträng, men den kommer att representera alla strängtecken med små tecken.

UPPER och LOWER returnerar nollvärden om du skickar ett nollvärde till dem.

Om du skickar numeriska värden till UPPER eller LOWER, kommer båda att returnera det exakta numeriska värdet.

Exempel:

SELECT UPPER('a string'), LOWER('A STRING'), UPPER(20), LOWER(20), UPPER(NULL), LOWER(NULL);

Detta ger dig:

Exempel på UPPER och LOWER funktioner i SQLite

Resultatet är följande:

  • UPPER('en sträng') returnerar strängen "en sträng" i versalrepresentation "EN STRÄNG".
  • LOWER('A STRING') returnerar strängen “A STRING” i liten bokstavsrepresentation “a sträng”.
  • UPPER(20), LOWER(20) returnerar samma tal, eftersom de inte har någon effekt på tal.
  • UPPER(NULL), LOWER(NULL) returnerar null eftersom vi skickade ett nollvärde till dem.

SQLite SUBSTR-funktion

Funktionen SUBSTR returnerar ett specifikt antal strängar, med början från en specifik position. Du kan skicka tre operander till funktionen, så här: "SUBSTR(X,Y,Z)" enligt följande:

  • X är strängen literal eller strängkolumnen som ska analyseras. Du kan skicka ett bokstavligt värde (statiskt värde) eller ett kolumnnamn, och i det här fallet kommer värdet att läsas från kolumnens värden.
  • Y är startpositionen för att extract strängen som börjar därifrån.
  • Z är antalet tecken att tolka med början från den specifika positionen Y. Detta nummer är valfritt och du kan ignorera det, och i det här fallet, SQLite kommer att extracAtt strängen börjar från position Y och anger slutet av strängen.

Exempel:

I följande fråga kommer vi att använda SUBSTR-funktionen för att hämta de 4 tecknen från det andra tecknet från elevernas namn:

SELECT StudentName, SUBSTR(StudentName, 2, 4), SUBSTR(StudentName, 2)
FROM Students;

Detta ger dig:

Exempel på SUBSTR-funktion i SQLite

  • SUBSTR(Studentnamn, 2, 4) delsträngar strängen "Studentnamn" med början från det andra tecknet och returnerar de följande 4 tecknen.
  • I funktionen SUBSTR(StudentName, 2) angav vi dock inget nummer för de tecken som skulle returneras, det är därför SQLite returnerade alla återstående tecken i "StudentName" med början från den andra positionen.

Ändra delar av en sträng med SQLite ERSÄTT funktionen

REPLACE används för att ersätta varje sträng som förekommer på en annan sträng med en sträng.

REPLACE(X, Y, Z) – X är inmatningssträngen literal eller kolumn. Y är strängen som ska ersättas med strängen Z. Observera att den kommer att ersätta varje förekomst av strängen Y med Z, inte bara en.

Exempel:

I följande fråga kommer vi att ersätta alla förekomster av strängen "xx" med strängen "SQLite"

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

Detta kommer att ge dig

Exempel på REPLACE-funktionen i SQLite

  • Funktionen ersätt ersatte alla strängar “xx” med strängen “SQLite".
  • Så utdata blir "SQLite är mycket lätt, SQLite är lätt att lära sig”.

Trimma tomma utrymmen med SQLite TRIM-funktion

TRIM ta bort tomma mellanslag från början eller från slutet av strängen. Det tar inte bort några mellanslag i mitten av strängen, bara från början eller från slutet.

Exempel:

I följande fråga kommer vi att använda TRIM-funktionen för att ta bort de tomma utrymmena från början och slutet av strängen.

Observera att sammanlänkningsoperatorn "||" används för att lägga till ett extra ";" till slutet av strängen. För att visa dig att de tomma utrymmena togs bort i det svarta fönstret.

SELECT TRIM('      SQLite is easy to learn        ') || ';';

Detta ger dig:

Exempel på TRIM-funktion i SQLite

Lägg märke till hur de tomma mellanslagen togs bort från början och från slutet av strängen, ersattes av ' ; ' i slutet.

Läsa absoluta värden med SQLite ABS-funktion

ABS-funktionen returnerar det absoluta värdet av ett numeriskt värde. Det absoluta värdet är det numeriska värdet utan något positivt eller negativt tecken. ABS(X) returnerar ett värde beroende på värdet på X enligt följande:

  • Det absoluta värdet av X om X är ett numeriskt värde.
  • Ett NULL-värde om X är ett nollvärde.
  • "0.0"-värde om X är en sträng.

Exempel:

I följande fråga kommer vi att försöka få det absoluta värdet av en sträng, ett tal och ett nullvärde med hjälp av ABS-funktionen:

SELECT ABS(-2), ABS(+2), ABS('a string'), ABS(null);

Detta ger dig:

Exempel på ABS-funktion i SQLite

Resultaten som följer:

  • ABS(-2), ABS(+2) returnerar 2, eftersom 2 är ett absolut värde för både "-2" och "+2".
  • ABS('en sträng') returnerar "0.0" eftersom du skickade ett strängvärde inte ett numeriskt värde.
  • ABS(null) returnerar null eftersom du skickade ett nollvärde för det.

Avrunda värden med ROUND-funktionen in SQLite

Decimaltal är tal med flyttal "." på den, till exempel "20.5", "8.65". Delen till vänster om flyttalsdelen kallas heltalsdelen, och delen till höger om flyttalen är decimaldelen.

Heltal är dessa tal utan flyttal. Till exempel "20", "8".

ROUND(X) konverterar decimalvärdena eller kolumnerna X till att endast vara heltal. Heltalsdelen som är delen till vänster om decimalkomma kommer att returneras, och alla siffror till höger om decimalkomma kommer att tas bort.

Exempel:

I följande fråga kommer vi att prova ROUND-funktionen med olika alternativ:

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

Detta ger dig:

Exempel på ROUND-funktion i SQLite

Resultatet som följer:

  • ROUND(12.4354354) – returnerar värdet "12", eftersom du inte angav antalet siffror. Så, SQLite tog bort hela decimaldelen.
  • ROUND(12.4354354, 2) – returnerar värdet "12.44", eftersom du endast angav 2 siffror att runda av, vilket är de två siffrorna från höger om decimalkomma.
  • ROUND(NULL) – returnerar null eftersom du skickade ett nollvärde till den.
  • ROUND('en sträng') – returnerar värdet "0.0" eftersom du skickade ett strängvärde till den.

Hitta datatypen för uttryck med TYPEOF-funktionen

Om du vill ta reda på typen av en kolumn eller ett bokstavligt värde kan du använda funktionen TYPEOF för att göra det.

Funktionen TYPEOF(X), från sitt namn, returnerar datatypen för uttrycket X. Den returnerar ett strängvärde som anger datatypen för X. Den returnerar värdet baserat på datatyperna, oavsett om det är ett "NULL"-värde, verkligt, text, heltal, …, etc.

Exempel:

I följande fråga kommer vi att prova TYPEOF-funktionen med olika typer av bokstavliga värden:

SELECT TYPEOF(null), TYPEOF(12), TYPEOF(12.5), TYPEOF('a string');

Detta ger dig:

Exempel på TYPEOF-funktion i SQLite

Resultaten som returneras är följande:

  • TYPEOF(null) – returnerar null eftersom du skickade ett nollvärde till det.
  • TYPEOF(12) – returnera ett heltal eftersom 12 är ett heltal.
  • TYPEOF(12.5) – returnerar REAL eftersom 12.5 är ett reellt tal.
  • TYPEOF('en sträng') – returnerar text eftersom "en sträng" är en text.

Hitta den senast infogade posten med SQLite LAST_INSERT_ROWID

SQLite tilldelar en heltalsnyckel (Id) för alla rader i alla tabeller. Detta nummer används för att unikt identifiera dessa rader.

När du infogar en ny rad på en tabell, SQLite kommer att tilldela raden ett unikt värde.

Om tabellen har en primärnyckel deklarerad endast i en kolumn och den kolumnen är av datatypen INTEGER, kommer detta kolumnvärde att användas som rowid.

Funktionen LAST_INSERT_ROWID() returnerar ROW_ID för den senast infogade raden i någon tabell i databasen. Observera att det inte krävs någon operand.

Exempel:

I följande exempel kör vi funktionen LAST_INSERT_ROWID() enligt följande:

SELECT LAST_INSERT_ROWID();

Detta ger dig:

Exempel på LAST_INSERT_ROWID funktion i SQLite

LAST_INSERT_ROWID() returnerar 0 eftersom det inte finns några rader infogade i några tabeller i den aktuella databasanslutningen.

Nu, låt oss infoga en ny student och köra funktionen LAST_INSERT_ROWID() igen efter insert-satsen, så här:

INSERT INTO Students VALUES(11, 'guru', 1, '1998-10-12');
SELECT LAST_INSERT_ROWID();

Detta ger dig:

Exempel på LAST_INSERT_ROWID funktion i SQLite

Efter att vi infogat en ny student med id 11 kommer LAST_INSERT_ROWID() att returnera det senast infogade rad-ID som är 11.

Hämta versionen av din SQLite

För att få versionen av din SQLite biblioteket måste du anropa SQLITE_VERSION()-funktionen.

Exempel:

Låt oss ta reda på vad som är versionen av SQLite vi använder genom att köra följande kommando:

SELECT SQLITE_VERSION();

Detta ger dig:

Exempel för att hämta versionen av din SQLite

SQLITE_VERSION() returnerar 3.9.2 som är versionen av SQLite vi använder.

Skapa användardefinierade funktioner och samla användardefinierade funktioner

För vissa användare är SQLite kärnfunktionerna är begränsade. De kan behöva lägga till anpassade funktioner för sina anpassade behov.

SQLite stöder inte att skapa användardefinierade funktioner. Till skillnad från andra databashanteringssystem kan du inte skapa användardefinierade funktioner i SQLite direkt.

Du kan dock skapa en funktion med hjälp av programmeringsspråk som C#, C, PHP eller C++ och kopplade den funktionen med kärnan SQLite funktioner i SQLite själva biblioteket med hjälp av funktionen "sqlite3_create_function". Sedan kan du återanvända dem i din databas.

Exempel:

I följande exempel skapar vi en användardefinierad funktion med programmeringsspråket C# och lägger till den i SQLite funktioner:

[SQLiteFunction(Name = "DoubleValue", Arguments = 1, FuncType = FunctionType.Scalar)]
public class DoubleValue: SQLiteFunction
{
    public override object Invoke(object[] args)
    {
        return args[0] * 2;
    }
}

Detta kodavsnitt är skrivet i C# programmeringsspråk; den skapar en C#-funktion med hjälp av C#-koden.

Funktionens namn kommer att vara "DoubleVärde” tar den en parameter och returnerar dess värde multiplicerat med 2.

Observera att C# automatiskt lägger till denna funktion till SQLite. Allt du behöver är att kompilera och köra den här koden. Då kommer C# att lägga till den funktionen med samma namn till listan över SQLite funktioner. Då kan du använda den här funktionen i SQLite.

På samma sätt använder man programmeringsspråk som C#, C, PHP eller C++, kan du också skapa aggregerade användardefinierade funktioner. Som används för att utöka aggregatfunktionerna i SQLite och använd dem för att skapa anpassade aggregatfunktioner.

Vanliga frågor

Skalära funktioner som LENGTH, UPPER och ROUND körs en gång per rad och returnerar ett värde vardera. Aggregerade funktioner som COUNT, SUM och GROUP_CONCAT bearbetar många rader tillsammans och returnerar ett enda kombinerat resultat för hela gruppen.

SQLite kopplar ihop strängar med operatorn ||, till exempel 'a' || 'b'. Nyare versioner lägger också till skalärfunktionerna concat() och concat_ws(), medan group_concat() kombinerar värden från många rader till en avgränsad sträng.

Ja. SQLite ger DATUM, TID, DATUM/TID, JULIANDAG och STRFTID. Dessa funktioner formaterar och beräknar datum från text, Unix-tidsstämplar eller specialvärdet 'nu', eftersom SQLite lagrar datum som TEXT, REAL eller INTEGER snarare än en dedikerad typ.

Som standard ändrar VERSALER och NEDER endast ASCII-bokstäverna A till Ö, så accenttecken eller tecken som inte är latinska förblir oförändrade. Fullständig Unicode-konvertering av gemener och versaler kräver att ICU-tillägget kompileras till SQLite, vilket få standardversioner inkluderar.

Använd funktionen INSTR(X, Y), som returnerar den första positionen för delsträng Y inuti sträng X, räknat från 1. Den returnerar 0 när delsträngen saknas. Koppla INSTR med SUBSTR för att t.ex.tract-text efter ett matchande tecken.

Radbryt uttrycket i IFNULL(X, fallback) eller COALESCE(X, fallback) för att ersätta ett standardvärde när en funktion returnerar null. COALESCE accepterar flera argument och returnerar det första värdet som inte är null, vilket är bra när många kolumner kan vara tomma.

Ja. GitHub Copilot föreslår LENGTH-, SUBSTR-, REPLACE- och ROUND-anrop från en kommentar eller ett tabellnamn, och utarbetar användardefinierad funktionskod i C eller C#. Testa alltid dess utdata mot ditt schema, eftersom det kan hitta på kolumnnamn.

Ja. AI-text-till-SQL-assistenter omvandlar förfrågningar i vanligt språk till SQLite frågor som använder strängfunktioner som TRIM och REPLACE. De snabbar upp prototyputvecklingenping, men du bör verifiera den genererade SQL-koden mot dina data, eftersom maskininlärningsmodeller ibland producerar felaktig logik.

Sammanfatta detta inlägg med: