В SQLite, substring()
е псевдоним за substr()
.
Той връща подниз от низ въз основа на дадено начално местоположение в низа. Необходими са два аргумента, а третият по избор се приема.
substring()
именуването беше въведено в SQLite 3.34.0, който беше пуснат на 1 декември 2020 г. Причината, че substring()
беше въведен синтаксис за съвместимост със SQL Server.
Синтаксис
Така че вече можете да извикате функцията по някой от следните начини:
substr(X,Y,Z)
substr(X,Y)
substring(X,Y,Z)
substring(X,Y)
X
е пълният низ, който съдържа поднизът, който искате да върнете.Y
е местоположението на първия знак от подниз, който искате да върнете от този низ.Z
е броят на знаците, които искате да бъдат върнати. Ако се пропусне, всички следващи знаци се връщат (започвайки отY
).
Ако X
е низ, тогава символните индекси се отнасят до действителните UTF-8 знаци. Ако X
е BLOB, тогава индексите се отнасят до байтове.
Както споменахме, substring()
синтаксисът е достъпен само от SQLite 3.34.0.
Пример с 3 аргумента
Ето един основен пример, за да демонстрирате как да използвате substring()
с три аргумента.
SELECT substring('Dolemite', 3, 4);
Резултат:
lemi
Пример с 2 аргумента
Ако пропусна третия аргумент от предишния пример, получавам следния резултат.
SELECT substring('Dolemite', 3);
Резултат:
lemite
Отрицателна начална точка
Можете да предоставите отрицателна стойност за втория аргумент. Когато направите това, първият знак от подниз се намира чрез броене отдясно, а не отляво.
SELECT substring('Dolemite', -3);
Резултат:
ite
Ето още един пример, този път уточнявам дължината на подниза.
SELECT substring('Dolemite', -7, 4);
Резултат:
olem
Така отрицателните стойности имат същия ефект като при използване на substring()
функция в MySQL. MySQL също има substr()
функция, която е синоним на нейния substring()
функция.
Това обаче е различно от начина, по който SQL Server третира отрицателните стойности. Когато подадете отрицателна стойност на substring()
в SQL Server той просто ще започне да брои във въображаема точка, преди низът да започне.
Отрицателна дължина на подниз
Предишният пример използва отрицателна отправна точка. В този пример ще използвам отрицателна дължина. С това имам предвид, че ще дам отрицателна стойност за третия аргумент.
SELECT substring('Dolemite', -1, -4);
Резултат:
emit
Така че предоставянето на отрицателна стойност за третия аргумент води до връщане на знаците, предхождащи началната точка.
Това важи и когато вторият аргумент е положителна стойност.
SELECT substring('Dolemite', 6, -4);
Резултат:
olem
Пример за база данни
Ето пример, който използва substring()
в заявка за база данни спрямо примерната база данни на Chinook.
SELECT
substring(Name, 1, 10),
Name
FROM Artist
ORDER BY Name DESC
LIMIT 10;
Резултат:
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
В този случай върнах първите десет знака от Name
колона. Също така върнах пълното съдържание на Name
колона, за да сравните резултатите.