SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLite SUBSTRING() erklärt

In SQLite substring() ist ein Alias ​​für substr() .

Es gibt eine Teilzeichenfolge aus einer Zeichenfolge zurück, basierend auf einer bestimmten Startposition innerhalb der Zeichenfolge. Zwei Argumente sind erforderlich, und ein drittes optionales Argument wird akzeptiert.

Der substring() Benennung wurde in SQLite 3.34.0 eingeführt, das am 1. Dezember 2020 veröffentlicht wurde. Der Grund dafür, dass der substring() Syntax wurde eingeführt, um die Kompatibilität mit SQL Server zu gewährleisten.

Syntax

Sie können die Funktion jetzt also auf eine der folgenden Arten aufrufen:

substr(X,Y,Z)
substr(X,Y)
substring(X,Y,Z)
substring(X,Y)
  • X ist die vollständige Zeichenfolge, die die Teilzeichenfolge enthält, die Sie zurückgeben möchten.
  • Y ist die Position des ersten Zeichens der Teilzeichenfolge, die Sie von dieser Zeichenfolge zurückgeben möchten.
  • Z ist die Anzahl der Zeichen, die Sie zurückgeben möchten. Wenn weggelassen, werden alle nachfolgenden Zeichen zurückgegeben (beginnend mit Y ).

Wenn X eine Zeichenfolge ist, beziehen sich Zeichenindizes auf tatsächliche UTF-8-Zeichen. Wenn X ein BLOB ist, beziehen sich die Indizes auf Bytes.

Wie bereits erwähnt, der substring() Syntax ist nur ab SQLite 3.34.0 verfügbar.

Beispiel mit 3 Argumenten

Hier ist ein einfaches Beispiel, um zu demonstrieren, wie man substring() verwendet mit drei Argumenten.

SELECT substring('Dolemite', 3, 4);

Ergebnis:

lemi

Beispiel mit 2 Argumenten

Wenn ich das dritte Argument aus dem vorherigen Beispiel weglasse, erhalte ich das folgende Ergebnis.

SELECT substring('Dolemite', 3);

Ergebnis:

lemite

Negativer Ausgangspunkt

Sie können für das zweite Argument einen negativen Wert angeben. Wenn Sie dies tun, wird das erste Zeichen des Teilstrings gefunden, indem von rechts statt von links gezählt wird.

SELECT substring('Dolemite', -3);

Ergebnis:

ite

Hier ist ein weiteres Beispiel, dieses Mal gebe ich die Länge des Teilstrings an.

SELECT substring('Dolemite', -7, 4);

Ergebnis:

olem

Negative Werte haben also den gleichen Effekt wie bei Verwendung des substring() Funktion in MySQL. MySQL hat auch ein substr() Funktion, die ein Synonym ihres substring() ist Funktion.

Dies unterscheidet sich jedoch davon, wie der SQL Server negative Werte behandelt. Wenn Sie einen negativen Wert an substring() übergeben In SQL Server beginnt es einfach an einem imaginären Punkt zu zählen, bevor die Zeichenfolge beginnt.

Negative Teilstringlänge

Im vorherigen Beispiel wurde ein negativer Startpunkt verwendet. In diesem Beispiel verwende ich eine negative Länge. Damit meine ich, dass ich für das dritte Argument einen negativen Wert angeben werde.

SELECT substring('Dolemite', -1, -4);

Ergebnis:

emit

Wenn Sie also einen negativen Wert für das dritte Argument angeben, werden die Zeichen vor dem Startpunkt zurückgegeben.

Dies gilt auch, wenn das zweite Argument ein positiver Wert ist.

SELECT substring('Dolemite', 6, -4);

Ergebnis:

olem

Datenbankbeispiel

Hier ist ein Beispiel, das substring() verwendet in einer Datenbankabfrage gegen die Chinook-Beispieldatenbank.

SELECT 
    substring(Name, 1, 10),
    Name
FROM Artist
ORDER BY Name DESC
LIMIT 10;

Ergebnis:

substring(Name, 1, 10)  Name                             
----------------------  ---------------------------------
Zeca Pagod              Zeca Pagodinho                   
Youssou N'              Youssou N'Dour                   
Yo-Yo Ma                Yo-Yo Ma                         
Yehudi Men              Yehudi Menuhin                   
Xis                     Xis                              
Wilhelm Ke              Wilhelm Kempff                   
Whitesnake              Whitesnake                       
Vinícius E              Vinícius E Qurteto Em Cy         
Vinícius E              Vinícius E Odette Lara           
Vinícius D              Vinícius De Moraes & Baden Powell

In diesem Fall habe ich die ersten zehn Zeichen von Name zurückgegeben Säule. Ich habe auch den vollständigen Inhalt von Name zurückgegeben Spalte, um die Ergebnisse zu vergleichen.