SQLite String-Funktionen: REPLACE, SUBSTR, TRIM, ROUND

SQLite ist standardmäßig mit einer Liste integrierter Funktionen ausgestattet SQLite Bibliothek. Sie können mithilfe der C-Sprache auch einige andere benutzerdefinierte Funktionen hinzufügen, um die Kernfunktionen zu erweitern.

Beachten Sie, dass Sie für alle folgenden Beispiele sqlite3.exe ausführen und wie folgt eine Verbindung zur Beispieldatenbank öffnen müssen:

Schritt 1) In diesem Schritt

  1. Öffnen Sie „Arbeitsplatz“ und navigieren Sie zum folgenden Verzeichnis „C:\sqlite" und dann
  2. offen "sqlite3.exe"

SQLite String-Funktionen

Schritt 2) Öffnen Sie die Datenbank“TutorialsSampleDB.db“ durch den folgenden Befehl:

SQLite String-Funktionen

Jetzt können Sie beliebige ausführen query und probieren Sie alle in den folgenden Abschnitten verwendeten Abfragen aus.

Ermitteln der LÄNGE einer Zeichenfolge in SQLite

Um die Länge einer Zeichenfolge zu ermitteln, verwenden Sie LENGTH(X), wobei X ein Zeichenfolgenwert ist. Wenn X ein Nullwert ist, gibt die Längenfunktion einen Nullwert zurück.

Sie können die Längenfunktion auch mit numerischen Werten verwenden, um die Länge des numerischen Werts zu ermitteln.

Ejemplo:

Im folgenden Beispiel probieren wir die Syntax der Funktion LENGTH mit den folgenden Werten aus:

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

Dadurch erhalten Sie:

Ermitteln der LÄNGE einer Zeichenfolge in SQLite

Das Ergebnis ist wie folgt:

  • LENGTH('A string') gibt 8 zurück, was der Länge der Zeichenfolge „A string“ entspricht.
  • LENGTH(NULL) gibt null zurück.
  • LENGTH(20) gibt 2 zurück, da 20 zwei Längen lang ist.
  • LENGTH(20.5) gibt 4 zurück; Die Gleitkommazahl „.“ wird als Zeichen gezählt, Sie haben also vier Zeichen – die 3 Zeichen, die die Länge der Zahlen ausmachen. Plus ein weiteres Zeichen für die Gleitkommazahl „.“.

Wechselgehäuse mit UPPER-Funktion und LOWER-Funktion

UPPER(X) gibt die gleiche x-Zeichenfolge zurück, stellt jedoch alle Zeichen der Zeichenfolge in Großbuchstaben dar.

LOWER(X) gibt die gleiche x-Zeichenfolge zurück, stellt jedoch alle Zeichen der Zeichenfolge in kleinen Zeichen dar.

UPPER und LOWER geben Nullwerte zurück, wenn Sie ihnen einen Nullwert übergeben.

Wenn Sie numerische Werte an UPPER oder LOWER übergeben, geben beide den genauen numerischen Wert zurück.

Ejemplo:

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

Dadurch erhalten Sie:

Beispiel für UPPER- und LOWER-Funktionen in SQLite

Das Ergebnis ist wie folgt:

  • UPPER('a string') gibt die Zeichenfolge „ein Faden„in Großbuchstabendarstellung“EIN FADEN".
  • LOWER('A STRING') gibt die Zeichenfolge „EIN FADEN„in Kleinbuchstabendarstellung“ein Faden".
  • UPPER(20), LOWER(20) gibt dieselbe Zahl zurück, da sie keinen Einfluss auf Zahlen haben.
  • UPPER(NULL), LOWER(NULL) gibt null zurück, weil wir ihnen einen Nullwert übergeben haben.

SQLite SUBSTR-Funktion

Die SUBSTR-Funktion gibt eine bestimmte Anzahl von Zeichenfolgen zurück, beginnend an einer bestimmten Position. Sie können der Funktion drei Operanden übergeben, wie folgt:SUBSTR(X,Y,Z)“ wie folgt:

  • X ist das String-Literal oder die zu analysierende String-Spalte. Sie können einen Literalwert (statischen Wert) oder einen Spaltennamen übergeben. In diesem Fall wird der Wert aus den Werten der Spalte gelesen.
  • Y ist die Startposition, an der die Zeichenfolge abgezogen werden soll.
  • Z ist die Anzahl der Zeichen, die ab der spezifischen Position Y analysiert werden sollen. Diese Zahl ist optional. Sie können sie ignorieren. In diesem Fall gilt: SQLite subtrahiert die Zeichenfolge ab der Position Y und gibt das Ende der Zeichenfolge an.

Ejemplo:

In der folgenden Abfrage verwenden wir die Funktion SUBSTR, um die 4 Zeichen ab dem zweiten Zeichen aus den Namen der Studenten abzurufen:

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

Dadurch erhalten Sie:

Beispiel einer SUBSTR-Funktion in SQLite

  • SUBSTR(Studentenname, 2, 4) Teilzeichenfolge der Zeichenfolge „Name des Studenten” beginnend mit dem zweiten Zeichen und geben die nächsten 4 Zeichen zurück.
  • Allerdings in der Funktion SUBSTR(Studentenname, 2) Aus diesem Grund haben wir keine Zahl für die zurückzugebenden Zeichen angegeben SQLite gab alle verbleibenden Zeichen im „Name des Studenten”ab der zweiten Position.

Teile eines Strings ändern mit SQLite REPLACE-Funktion

REPLACE wird verwendet, um jede Zeichenfolge, die in einer anderen Zeichenfolge vorkommt, durch eine Zeichenfolge zu ersetzen.

REPLACE(X, Y, Z) – X ist das Eingabezeichenfolgenliteral oder die Eingabespalte. Y ist die Zeichenfolge, die durch die Zeichenfolge Z ersetzt werden soll. Beachten Sie, dass jedes Vorkommen der Zeichenfolge Y durch Z ersetzt wird, nicht nur eines.

Ejemplo:

In der folgenden Abfrage ersetzen wir alle Vorkommen der Zeichenfolge „xx” mit der Zeichenfolge „SQLite"

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

Dies wird Ihnen

Beispiel für die REPLACE-Funktion in SQLite

  • Die Ersetzungsfunktion ersetzte alle Zeichenfolgen „xx” mit der Zeichenfolge „SQLite".
  • Die Ausgabe wird also sein "SQLite ist sehr leicht, SQLite ist leicht zu erlernen“.

Leerstellen mit trimmen SQLite TRIM-Funktion

TRIM entfernt Leerzeichen am Anfang oder am Ende der Zeichenfolge. Es werden keine Leerzeichen in der Mitte der Zeichenfolge entfernt, sondern nur am Anfang oder am Ende.

Ejemplo:

In der folgenden Abfrage verwenden wir die TRIM-Funktion, um die Leerzeichen am Anfang und Ende der Zeichenfolge zu entfernen.

Beachten Sie, dass der Verkettungsoperator „||“ verwendet wird, um am Ende der Zeichenfolge ein zusätzliches „;“ hinzuzufügen. Um Ihnen anzuzeigen, dass die Leerzeichen im schwarzen Fenster entfernt wurden.

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

Dadurch erhalten Sie:

Beispiel einer TRIM-Funktion in SQLite

  • Beachten Sie, dass die Leerzeichen am Anfang und am Ende der Zeichenfolge entfernt und durch „;“ ersetzt wurden. ' Am Ende.

Absolute Werte lesen mit SQLite ABS-Funktion

Die ABS-Funktion gibt den Absolutwert eines numerischen Werts zurück. Der Absolutwert ist der numerische Wert ohne positives oder negatives Vorzeichen. ABS(X) gibt einen Wert abhängig vom Wert von X wie folgt zurück:

  • Der absolute Wert von X, wenn X ein numerischer Wert ist.
  • Ein NULL-Wert, wenn X ein Nullwert ist.
  • „0.0“-Wert, wenn X eine Zeichenfolge ist.

Ejemplo:

In der folgenden Abfrage versuchen wir, mit der ABS-Funktion den Absolutwert einer Zeichenfolge, einer Zahl und eines Nullwerts zu ermitteln:

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

Dadurch erhalten Sie:

Beispiel für die ABS-Funktion in SQLite

Die Ergebnisse sind wie folgt:

  • ABS(-2), ABS(+2) gibt 2 zurück, da 2 sowohl für „-2“ als auch für „+2“ ein absoluter Wert ist.
  • ABS('a string') gibt „0.0“ zurück, weil Sie einen String-Wert und keinen numerischen Wert übergeben haben.
  • ABS(null) gibt null zurück, da Sie einen Nullwert dafür übergeben haben.

Runden von Werten mit der ROUND-Funktion in SQLite

Dezimalzahlen sind Zahlen mit Gleitkommazahlen „.“, zum Beispiel „20.5“, „8.65“. Der Teil links vom Gleitkomma wird als ganzzahliger Teil bezeichnet, und der Teil rechts vom Gleitkomma ist der Dezimalteil.

Ganzzahlen sind Zahlen ohne Gleitkomma. Zum Beispiel „20“, „8“.

ROUND(X) konvertiert die Dezimalwerte oder Spalten X nur in Ganzzahlen. Der ganzzahlige Teil, also der Teil links vom Dezimalpunkt, wird zurückgegeben, und alle Ziffern rechts vom Dezimalpunkt werden entfernt.

Ejemplo:

In der folgenden Abfrage probieren wir die Funktion ROUND mit verschiedenen Optionen aus:

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

Dadurch erhalten Sie:

Beispiel einer ROUND-Funktion in SQLite

Das Ergebnis wie folgt:

  • ROUND(12.4354354) – gibt den Wert „12“ zurück, da Sie die Anzahl der Ziffern nicht angegeben haben. Also, SQLite Der gesamte Dezimalteil wurde entfernt.
  • ROUND(12.4354354, 2) – gibt den Wert „12.44“ zurück, da Sie nur 2 Ziffern zum Runden angegeben haben, nämlich die beiden Ziffern rechts vom Dezimalpunkt.
  • ROUND(NULL) – gibt null zurück, weil Sie ihm einen Nullwert übergeben haben.
  • ROUND('a string') – gibt den Wert „0.0“ zurück, weil Sie ihm einen Stringwert übergeben haben.

Ermitteln des Datentyps eines Ausdrucks mit der TYPEOF-Funktion

Wenn Sie den Typ einer Spalte oder eines Literalwerts herausfinden möchten, können Sie dazu die Funktion TYPEOF verwenden.

Die Funktion TYPEOF(X) gibt anhand ihres Namens den Datentyp des Ausdrucks X zurück. Sie gibt einen Zeichenfolgenwert zurück, der den Datentyp von reell, Text, Ganzzahl, … usw.

Ejemplo:

In der folgenden Abfrage probieren wir die Funktion TYPEOF mit verschiedenen Typen von Literalwerten aus:

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

Dadurch erhalten Sie:

Beispiel einer TYPEOF-Funktion in SQLite

Die zurückgegebenen Ergebnisse lauten wie folgt:

  • TYPEOF(null) – gibt null zurück, weil Sie ihm einen Nullwert übergeben haben.
  • TYPEOF(12) – gibt eine Ganzzahl zurück, da 12 eine Ganzzahl ist.
  • TYPEOF(12.5) – gibt REAL zurück, da 12.5 eine reelle Zahl ist.
  • TYPEOF('a string') – gibt Text zurück, da „a string“ ein Text ist.

Den zuletzt eingefügten Datensatz finden mit SQLite LAST_INSERT_ROWID

SQLite weist allen Zeilen in allen Tabellen einen ganzzahligen Schlüssel (Id) zu. Diese Nummer dient zur eindeutigen Identifizierung dieser Zeilen.

Wenn Sie eine neue Zeile in eine Tabelle einfügen, SQLite weist der Zeilen-ID einen eindeutigen Wert zu.

Wenn in der Tabelle nur für eine Spalte ein Primärschlüssel deklariert ist und diese Spalte den Datentyp INTEGER hat, wird dieser Spaltenwert als Zeilen-ID verwendet.

Die Funktion LAST_INSERT_ROWID() gibt die ROW_ID der letzten eingefügten Zeile in einer beliebigen Tabelle in der Datenbank zurück. Beachten Sie, dass sie keinen Operanden annimmt.

Ejemplo:

Im folgenden Beispiel führen wir die Funktion LAST_INSERT_ROWID() wie folgt aus:

SELECT LAST_INSERT_ROWID();

Dadurch erhalten Sie:

Beispiel für die Funktion LAST_INSERT_ROWID in SQLite

  • LAST_INSERT_ROWID() gibt 0 zurück, da in der aktuellen Datenbankverbindung keine Zeilen in Tabellen eingefügt wurden.

Fügen wir nun einen neuen Schüler ein und führen die Funktion LAST_INSERT_ROWID() nach der Einfügeanweisung erneut aus, etwa so:

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

Dadurch erhalten Sie:

Beispiel für die Funktion LAST_INSERT_ROWID in SQLite

  • Nachdem wir einen neuen Schüler mit der ID 11 eingefügt haben, gibt LAST_INSERT_ROWID() die zuletzt eingefügte Zeilen-ID zurück, die 11 ist.

Holen Sie sich die Version von Ihnen SQLite Bibliothek

Um die Version von Ihnen zu erhalten SQLite Bibliothek müssen Sie die Funktion SQLITE_VERSION() aufrufen.

Ejemplo:

Lassen Sie uns herausfinden, was die Version ist SQLite Wir verwenden, indem wir den folgenden Befehl ausführen:

SELECT SQLITE_VERSION();

Dadurch erhalten Sie:

Beispiel zum Abrufen der Version Ihres SQLite Bibliothek

SQLITE_VERSION() gibt 3.9.2 zurück, die Version des SQLite wir benutzen.

Erstellen benutzerdefinierter Funktionen und Aggregation benutzerdefinierter Funktionen

Für einige Benutzer ist die SQLite Kernfunktionen sind eingeschränkt. Möglicherweise müssen sie benutzerdefinierte Funktionen für ihre individuellen Anforderungen hinzufügen.

SQLite unterstützt nicht das Erstellen benutzerdefinierter Funktionen. Im Gegensatz zu anderen Datenbankverwaltungssystemen können Sie darin keine benutzerdefinierten Funktionen erstellen SQLite direkt.

Sie können jedoch eine Funktion mit Programmiersprachen wie C#, C, PHP oder C++ und diese Funktion mit dem Kern verbunden SQLite Funktionen in der SQLite Bibliothek selbst, mit „sqlite3_create_function” Funktion. Anschließend können Sie sie in Ihrer Datenbank wiederverwenden.

Ejemplo:

Im folgenden Beispiel erstellen wir eine benutzerdefinierte Funktion mit C# Programmiersprache und fügen Sie sie hinzu SQLite Funktionen:

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

Dieses Code-Snippet ist im geschrieben Programmiersprache C#; Es erstellt eine C#-Funktion unter Verwendung des C#-Codes.

Der Funktionsname lautet „DoubleWert„Es nimmt einen Parameter und gibt seinen Wert multipliziert mit 2 zurück.

Beachten Sie, dass C# diese Funktion automatisch hinzufügt SQLite. Sie müssen lediglich diesen Code kompilieren und ausführen. Dann fügt C# die gleichnamige Funktion zur Liste hinzu SQLite Funktionen. Dann können Sie diese Funktion in verwenden SQLite.

Genauso wie mit Programmiersprachen wie C#, C, PHP oder C++können Sie auch benutzerdefinierte Aggregatfunktionen erstellen. Diese dienen zur Erweiterung der Aggregatfunktionen in SQLite und verwenden Sie sie, um benutzerdefinierte Aggregatfunktionen zu erstellen.

Zusammenfassung

  • SQLite bietet einen umfassenden Satz integrierter Funktionen, die, wie wir gesehen haben, die Arbeit mit Datenbanktabellen und -spalten vereinfachen. Sie können diese Funktionen sowohl mit Spalten als auch mit Literalwerten in jedem Ausdruck in Ihren SQL-Abfragen verwenden.
  • Sie können die Längenfunktion auch mit numerischen Werten verwenden, um die Länge des numerischen Werts zu ermitteln.
  • UPPER und LOWER geben Nullwerte zurück, wenn Sie ihnen einen Nullwert übergeben.
  • Die SUBSTR-Funktion gibt eine bestimmte Anzahl von Zeichenfolgen zurück, beginnend an einer bestimmten Position.
  • REPLACE wird verwendet, um jede Zeichenfolge, die in einer anderen Zeichenfolge vorkommt, durch eine Zeichenfolge zu ersetzen.
  • TRIM entfernt Leerzeichen am Anfang oder am Ende der Zeichenfolge.
  • Die ABS-Funktion gibt den absoluten Wert eines numerischen Werts zurück.
  • ROUND(X) wandelt die Dezimalwerte oder Spalten X nur in ganze Zahlen um.
  • Die Funktion TYPEOF(X) gibt anhand ihres Namens den Datentyp des Ausdrucks X zurück.
  • Die Funktion LAST_INSERT_ROWID() gibt die ROW_ID der zuletzt eingefügten Zeile in einer beliebigen Tabelle in der Datenbank zurück.