sql >> Databasteknik >  >> RDS >> SQLite

SQLite SUBSTRING() förklaras

I SQLite, substring() är ett alias för substr() .

Den returnerar en delsträng från en sträng, baserat på en given startplats i strängen. Två argument krävs, och ett tredje valfritt argument accepteras.

substring() namngivning introducerades i SQLite 3.34.0, som släpptes den 1 december 2020. Anledningen till att substring() syntaxen introducerades var för kompatibilitet med SQL Server.

Syntax

Så du kan nu anropa funktionen på något av följande sätt:

substr(X,Y,Z)
substr(X,Y)
substring(X,Y,Z)
substring(X,Y)
  • X är den fullständiga strängen som innehåller delsträngen du vill returnera.
  • Y är platsen för det första tecknet i delsträngen som du vill returnera från den strängen.
  • Z är antalet tecken som du vill ha tillbaka. Om det utelämnas, returneras alla efterföljande tecken (med början från Y ).

Om X är en sträng hänvisar teckenindex till faktiska UTF-8-tecken. Om X är en BLOB hänvisar indexen till bytes.

Som nämnts, substring() syntax är endast tillgänglig från SQLite 3.34.0.

Exempel med 3 argument

Här är ett grundläggande exempel för att visa hur man använder substring() med tre argument.

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

Resultat:

lemi

Exempel med två argument

Om jag utelämnar det tredje argumentet från föregående exempel får jag följande resultat.

SELECT substring('Dolemite', 3);

Resultat:

lemite

Negativ utgångspunkt

Du kan ange ett negativt värde för det andra argumentet. När du gör detta hittas det första tecknet i delsträngen genom att räkna från höger snarare än från vänster.

SELECT substring('Dolemite', -3);

Resultat:

ite

Här är ett annat exempel, den här gången anger jag längden på delsträngen.

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

Resultat:

olem

Så negativa värden har samma effekt som när du använder substring() funktion i MySQL. MySQL har också en substr() funktion, som är en synonym till dess substring() fungera.

Detta skiljer sig dock från hur SQL Server behandlar negativa värden. När du skickar ett negativt värde till substring() i SQL Server börjar den helt enkelt räknas vid en tänkt punkt innan strängen börjar.

Negativ delsträngslängd

I det föregående exemplet användes en negativ utgångspunkt. I det här exemplet kommer jag att använda en negativ längd. Med detta menar jag att jag ska ge ett negativt värde för det tredje argumentet.

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

Resultat:

emit

Så att ge ett negativt värde för det tredje argumentet resulterar i att tecknen som föregår startpunkten returneras.

Detta gäller även när det andra argumentet är ett positivt värde.

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

Resultat:

olem

Databasexempel

Här är ett exempel som använder substring() i en databasfråga mot Chinook-exempeldatabasen.

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

Resultat:

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

I det här fallet returnerade jag de första tio tecknen från Name kolumn. Jag returnerade också hela innehållet i Name kolumn för att jämföra resultaten.


  1. Oracle PL/SQL-samlingar - Lägga till element i en befintlig tabell

  2. Skicka ett fel som förhindrar en tabelluppdatering i en MySQL-utlösare

  3. Hur man får databasmetadata

  4. 5 snabba användbara tips för SQL Server Production DBA:er