W SQLite, substring()
jest aliasem dla substr()
.
Zwraca podciąg z ciągu na podstawie podanej lokalizacji początkowej w ciągu. Wymagane są dwa argumenty, a trzeci opcjonalny argument jest akceptowany.
substring()
nazewnictwo zostało wprowadzone w wersji SQLite 3.34.0, która została wydana 1 grudnia 2020 r. Powód, dla którego substring()
składnia została wprowadzona w celu zapewnienia zgodności z SQL Server.
Składnia
Możesz więc teraz wywołać funkcję w dowolny z następujących sposobów:
substr(X,Y,Z)
substr(X,Y)
substring(X,Y,Z)
substring(X,Y)
X
to pełny ciąg zawierający podciąg, który chcesz zwrócić.Y
jest lokalizacją pierwszego znaku podciągu, który chcesz zwrócić z tego ciągu.Z
to liczba znaków, które chcesz zwrócić. W przypadku pominięcia zwracane są wszystkie kolejne znaki (zaczynając odY
).
Jeśli X
jest łańcuchem, a indeksy znaków odnoszą się do rzeczywistych znaków UTF-8. Jeśli X
jest BLOBem, indeksy odnoszą się do bajtów.
Jak wspomniano, substring()
składnia jest dostępna tylko w SQLite 3.34.0.
Przykład z 3 argumentami
Oto podstawowy przykład pokazujący, jak używać substring()
z trzema argumentami.
SELECT substring('Dolemite', 3, 4);
Wynik:
lemi
Przykład z 2 argumentami
Jeśli pominę trzeci argument z poprzedniego przykładu, otrzymam następujący wynik.
SELECT substring('Dolemite', 3);
Wynik:
lemite
Ujemny punkt początkowy
Możesz podać wartość ujemną dla drugiego argumentu. Gdy to zrobisz, pierwszy znak podłańcucha zostanie znaleziony, licząc od prawej, a nie od lewej.
SELECT substring('Dolemite', -3);
Wynik:
ite
Oto kolejny przykład, tym razem określam długość podciągu.
SELECT substring('Dolemite', -7, 4);
Wynik:
olem
Tak więc wartości ujemne mają taki sam efekt, jak przy użyciu substring()
funkcja w MySQL. MySQL ma również funkcję substr()
funkcja, która jest synonimem jej substring()
funkcjonować.
Jednak różni się to od sposobu, w jaki SQL Server traktuje wartości ujemne. Gdy przekazujesz wartość ujemną do substring()
w SQL Server po prostu zacznie liczyć w wyimaginowanym punkcie przed rozpoczęciem ciągu.
Ujemna długość podciągu
W poprzednim przykładzie użyto ujemnego punktu początkowego. W tym przykładzie użyję długości ujemnej. Rozumiem przez to, że zamierzam podać ujemną wartość trzeciego argumentu.
SELECT substring('Dolemite', -1, -4);
Wynik:
emit
Zatem podanie ujemnej wartości trzeciego argumentu powoduje zwrócenie znaków poprzedzających punkt początkowy.
Dotyczy to również sytuacji, gdy drugi argument jest wartością dodatnią.
SELECT substring('Dolemite', 6, -4);
Wynik:
olem
Przykład bazy danych
Oto przykład, który używa substring()
w zapytaniu do bazy danych w przykładowej bazie danych Chinook.
SELECT
substring(Name, 1, 10),
Name
FROM Artist
ORDER BY Name DESC
LIMIT 10;
Wynik:
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
W tym przypadku zwróciłem pierwsze dziesięć znaków z Name
kolumna. Zwróciłem również pełną zawartość Name
kolumny w celu porównania wyników.