sql >> Database >  >> RDS >> SQLite

SQLite SUBSTRING() uitgelegd

In SQLite, substring() is een alias voor substr() .

Het retourneert een subtekenreeks van een tekenreeks, gebaseerd op een bepaalde startlocatie binnen de tekenreeks. Er zijn twee argumenten vereist en een derde optioneel argument wordt geaccepteerd.

De substring() naamgeving is geïntroduceerd in SQLite 3.34.0, die op 1 december 2020 werd uitgebracht. De reden dat de substring() syntaxis werd geïntroduceerd was voor compatibiliteit met SQL Server.

Syntaxis

U kunt de functie nu dus op een van de volgende manieren aanroepen:

substr(X,Y,Z)
substr(X,Y)
substring(X,Y,Z)
substring(X,Y)
  • X is de volledige tekenreeks die de subtekenreeks bevat die u wilt retourneren.
  • Y is de locatie van het eerste teken van de subtekenreeks die u van die tekenreeks wilt retourneren.
  • Z is het aantal tekens dat u wilt retourneren. Indien weggelaten, worden alle volgende tekens geretourneerd (vanaf Y ).

Als X is een string, dan verwijzen karakterindexen naar daadwerkelijke UTF-8 karakters. Als X is een BLOB, dan verwijzen de indices naar bytes.

Zoals gezegd, de substring() syntaxis is alleen beschikbaar vanaf SQLite 3.34.0.

Voorbeeld met 3 argumenten

Hier is een eenvoudig voorbeeld om te demonstreren hoe substring() te gebruiken met drie argumenten.

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

Resultaat:

lemi

Voorbeeld met 2 argumenten

Als ik het derde argument uit het vorige voorbeeld weglaat, krijg ik het volgende resultaat.

SELECT substring('Dolemite', 3);

Resultaat:

lemite

Negatief startpunt

U kunt een negatieve waarde opgeven voor het tweede argument. Wanneer u dit doet, wordt het eerste teken van de subtekenreeks gevonden door vanaf rechts te tellen in plaats van links.

SELECT substring('Dolemite', -3);

Resultaat:

ite

Hier is nog een voorbeeld, deze keer specificeer ik de lengte van de substring.

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

Resultaat:

olem

Negatieve waarden hebben dus hetzelfde effect als bij het gebruik van de substring() functie in MySQL. MySQL heeft ook een substr() functie, wat een synoniem is van zijn substring() functie.

Dit is echter anders dan hoe de SQL Server omgaat met negatieve waarden. Wanneer u een negatieve waarde doorgeeft aan substring() in SQL Server begint het gewoon te tellen op een denkbeeldig punt voordat de string begint.

Negatieve subtekenreekslengte

In het vorige voorbeeld werd een negatief uitgangspunt gebruikt. In dit voorbeeld ga ik een negatieve lengte gebruiken. Hiermee bedoel ik dat ik een negatieve waarde ga geven voor het derde argument.

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

Resultaat:

emit

Dus het verstrekken van een negatieve waarde voor het derde argument resulteert in het retourneren van de tekens voorafgaand aan het startpunt.

Dit geldt ook als het tweede argument een positieve waarde is.

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

Resultaat:

olem

Databasevoorbeeld

Hier is een voorbeeld dat gebruikmaakt van substring() in een databasequery tegen de Chinook-voorbeelddatabase.

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

Resultaat:

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 dit geval heb ik de eerste tien tekens van de Name . geretourneerd kolom. Ik heb ook de volledige inhoud van de Name . teruggestuurd kolom om de resultaten te vergelijken.


  1. Hoe te controleren of een database bestaat in SQL Server?

  2. Retourneert nul als er geen record is gevonden

  3. LAST_DAY() Voorbeelden – MySQL

  4. Room DB gebruiken in bibliotheekproject