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

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 för alla följande exempel måste du köra sqlite3.exe och öppna en anslutning till exempeldatabasen som flytande:

Steg 1) I detta steg

  1. Öppna Den här datorn och navigera till följande katalog "C:\sqlite" och då
  2. öppen "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.

Exempelvis:

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.

Exempelvis:

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"representation med versaler"EN STRING".
  • LOWER('A STRING') returnerar strängen "EN STRING"representation med små bokstäver"en 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

SUBSTR-funktionen 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 subtrahera strängen från den.
  • 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 subtrahera strängen med början från positionen Y berätta slutet på strängen.

Exempelvis:

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äng strängen "Elevs namn” med början från det andra tecknet och returnera de kommande 4 tecknen.
  • Dock i funktionen SUBSTR(Studentnamn, 2) vi angav inget nummer för tecknen som skulle returneras, det är därför SQLite returnerade alla återstående tecken i "Elevs namn” 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.

Exempelvis:

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

  • Ersätt-funktionen ersatte alla strängar "xx" med strängen "SQLite".
  • Så utgången 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.

Exempelvis:

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.

Exempelvis:

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.

Exempelvis:

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.

Exempelvis:

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.

Exempelvis:

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 bibliotek

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

Exempelvis:

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 få versionen av din SQLite bibliotek

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 biblioteket själv, med hjälp av "sqlite3_create_function" funktion. Sedan kan du återanvända dem i din databas.

Exempelvis:

I följande exempel kommer vi att skapa en användardefinierad funktion med hjälp av C# programmeringsspråk och lägg till det 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ärderar” den tar 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.

Sammanfattning

  • SQLite ger en omfattande uppsättning inbyggda funktioner som gör arbetet med databasens tabeller och kolumner enkelt som vi såg. Du kan använda dessa funktioner med kolumner såväl som bokstavliga värden inom alla uttryck i dina SQL-frågor.
  • Du kan också använda längdfunktionen med numeriska värden för att få längden på det numeriska värdet.
  • UPPER och LOWER returnerar nollvärden om du skickar ett nollvärde till dem.
  • SUBSTR-funktionen returnerar ett specifikt antal strängar, med början från en specifik position.
  • REPLACE används för att ersätta varje sträng som förekommer på en annan sträng med en sträng.
  • TRIM tar bort tomma mellanslag från början eller från slutet av strängen.
  • ABS-funktionen returnerar det absoluta värdet av ett numeriskt värde.
  • ROUND(X) konverterar decimalvärdena eller kolumnerna X till att endast vara heltal.
  • Funktionen TYPEOF(X), från dess namn, returnerar datatypen för uttrycket X.
  • Funktionen LAST_INSERT_ROWID() returnerar ROW_ID för den senast infogade raden i någon tabell i databasen.