sql >> Databáze >  >> RDS >> SQLite

SQLite SUBSTRING() Vysvětleno

V SQLite substring() je alias pro substr() .

Vrací podřetězec z řetězce na základě daného počátečního umístění v řetězci. Dva argumenty jsou povinné a třetí volitelný argument je akceptován.

substring() pojmenování bylo zavedeno ve verzi SQLite 3.34.0, která byla vydána 1. prosince 2020. Důvod, proč substring() syntaxe byla zavedena kvůli kompatibilitě se serverem SQL.

Syntaxe

Nyní tedy můžete funkci volat kterýmkoli z následujících způsobů:

substr(X,Y,Z)
substr(X,Y)
substring(X,Y,Z)
substring(X,Y)
  • X je úplný řetězec obsahující podřetězec, který chcete vrátit.
  • Y je umístění prvního znaku podřetězce, který chcete z tohoto řetězce vrátit.
  • Z je počet znaků, které chcete vrátit. Pokud je vynechán, vrátí se všechny následující znaky (počínaje Y ).

Pokud X je řetězec, pak znaky indexy odkazují na skutečné znaky UTF-8. Pokud X je BLOB, pak indexy odkazují na bajty.

Jak již bylo zmíněno, substring() syntaxe je dostupná pouze od SQLite 3.34.0.

Příklad se 3 argumenty

Zde je základní příklad, který ukazuje, jak používat substring() se třemi argumenty.

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

Výsledek:

lemi

Příklad se 2 argumenty

Pokud vynechám třetí argument z předchozího příkladu, dostanu následující výsledek.

SELECT substring('Dolemite', 3);

Výsledek:

lemite

Negativní výchozí bod

Pro druhý argument můžete zadat zápornou hodnotu. Když to uděláte, první znak podřetězce je nalezen počítáním zprava, nikoli zleva.

SELECT substring('Dolemite', -3);

Výsledek:

ite

Zde je další příklad, tentokrát specifikuji délku podřetězce.

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

Výsledek:

olem

Takže záporné hodnoty mají stejný účinek jako při použití substring() funkce v MySQL. MySQL má také substr() funkce, která je synonymem pro její substring() funkce.

To se však liší od toho, jak SQL Server zachází se zápornými hodnotami. Když předáte zápornou hodnotu do substring() v SQL Server jednoduše začne počítat v pomyslném bodě před začátkem řetězce.

Délka záporného podřetězce

Předchozí příklad používal negativní výchozí bod. V tomto příkladu použiji zápornou délku. Tím chci říct, že poskytnu zápornou hodnotu pro třetí argument.

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

Výsledek:

emit

Takže zadání záporné hodnoty pro třetí argument má za následek návrat znaků předcházejících počátečnímu bodu.

To platí také v případě, že druhý argument je kladná hodnota.

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

Výsledek:

olem

Příklad databáze

Zde je příklad, který používá substring() v databázovém dotazu proti vzorové databázi Chinook.

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

Výsledek:

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

V tomto případě jsem vrátil prvních deset znaků z Name sloupec. Také jsem vrátil celý obsah Name za účelem porovnání výsledků.


  1. mysql_fetch_row() vs mysql_fetch_assoc() vs mysql_fetch_array()

  2. Rozdělit velký textový/CSV soubor na více souborů v PL SQL

  3. Nainstalujte webový server ve Windows XP s Apache2, PHP5 a MySQL4 – část 1

  4. Jak mohu (nebo mohu) SELECT DISTINCT na více sloupcích?