SQLite Функции за работа с низове: REPLACE, SUBSTR, TRIM, LENGTH

⚡ Умно обобщение

SQLite Функциите за низове като LENGTH, SUBSTR, REPLACE и TRIM манипулират текст директно в заявките, докато числовите помощни функции като ABS и ROUND, плюс помощните функции TYPEOF и версии, разширяват обхвата на SQLite библиотеката изпълнява.

  • 📏 Дължина: Функцията LENGTH брои колко символа съдържа един низ и връща null, когато предадената стойност е null.
  • 🔠 Преобразуване на случаи: UPPER и LOWER превключват низа на главни или малки букви, оставяйки числата и null стойностите непроменени.
  • ✂️ Поднизове: SUBSTR extracts символи от избрана позиция, докато REPLACE разменя всяко появяване на един подниз с друго.
  • 🧮 Числови помощници: ABS връща стойност без знака си, а ROUND съкращава десетично число до цифрите, които искате.
  • 🔍 инспекция: TYPEOF съобщава типа данни на израз, а LAST_INSERT_ROWID връща идентификатора на последния вмъкнат ред.
  • 🤖 AI помощ: GitHub Copilot и AI инструменти за преобразуване на текст в SQL, базирани на скеле SQLite функционални заявки, докато персонализираните C функции разширяват вградената библиотека.

SQLite Струнни функции

Как да настроите SQLite и изпълнява заявки за низови функции

SQLite по подразбиране е оборудван със списък от вградени функции в рамките на SQLite библиотека. Можете също да добавите някои други персонализирани функции, като използвате езика C, за да разширите основните функции.

Обърнете внимание, че за всички следващи примери трябва да стартирате sqlite3.exe и да отворите връзка с примерната база данни, както следва:

Стъпка 1) В тази стъпка отворете „Моят компютър“ и отидете в следната директория „C:\sqlite“, след което отворете „sqlite3.exe“:

SQLite Струнни функции

Стъпка 2) Отворете базата данни „TutorialsSampleDB.db“ със следната команда:

SQLite Струнни функции

Сега сте готови да стартирате всеки заявка и опитайте всички заявки, използвани в следващите раздели.

Намиране на LENGTH от низ в SQLite

За да намерите дължината на низ, използвайте LENGTH(X), където X е стойност на низ. Ако X е нулева стойност, функцията за дължина ще върне нулева стойност.

Можете също да използвате функцията за дължина с числови стойности, за да получите дължината на числовата стойност.

Пример:

В следващия пример ще опитаме синтаксиса на функцията LENGTH със следните стойности:

SELECT LENGTH('A string'), LENGTH(NULL), LENGTH(20), LENGTH(20.5);

Това ще ви даде:

Намиране на LENGTH от низ в SQLite

Резултатът е следният:

  • LENGTH('A string') връща 8, което е дължината на низа "A string".
  • LENGTH(NULL) връща нула.
  • LENGTH(20) връща 2, защото 20 е 2 дължини.
  • LENGTH(20.5) връща 4; Плаващата запетая "." се брои като знак, така че ще имате четири знака – 3-те знака, които са дължината на числата. Плюс още един знак за плаващата запетая „.“.

Промяна на регистър с функция UPPER и функция LOWER

UPPER(X) ще върне същия низ x, но ще представи всички символи на низа с главни букви.

LOWER(X) ще върне същия низ x, но ще представи всички символи на низа с малки знаци.

UPPER и LOWER връща нулеви стойности, ако им подадете нулева стойност.

Ако подадете числови стойности на UPPER или LOWER, и двете ще върнат точната числова стойност.

Пример:

SELECT UPPER('a string'), LOWER('A STRING'), UPPER(20), LOWER(20), UPPER(NULL), LOWER(NULL);

Това ще ви даде:

Пример за функции UPPER и LOWER в SQLite

Резултатът е следният:

  • UPPER('низ') връща низа „низ“ в представяне с главни букви „A STRING“.
  • LOWER('A STRING') връща низа „A STRING“ в представяне с малки букви „низ“.
  • UPPER(20), LOWER(20) връща същото число, тъй като те нямат ефект върху числата.
  • UPPER(NULL), LOWER(NULL) връща null, защото сме им предали null стойност.

SQLite Функция SUBSTR

Функцията SUBSTR връща определен брой низове, започващи от определена позиция. Можете да предадете три операнда на функцията, например „SUBSTR(X,Y,Z)“, както следва:

  • X е низовият литерал или низовата колона за анализ. Можете да подадете литерална стойност (статична стойност) или име на колона и в този случай стойността ще бъде прочетена от стойностите на колоната.
  • Y е началната позиция за extract низът, започващ от него.
  • Z е броят знаци за анализиране, започвайки от конкретната позиция Y. Това число не е задължително, можете да го игнорирате и в този случай, SQLite ще бъде бившtract низът, започващ от позиция Y, показва края на низа.

Пример:

В следната заявка ще използваме функцията SUBSTR, за да получим 4-те знака, започвайки от втория знак от имената на учениците:

SELECT StudentName, SUBSTR(StudentName, 2, 4), SUBSTR(StudentName, 2)
FROM Students;

Това ще ви даде:

Пример за функция SUBSTR в SQLite

  • SUBSTR(ИмеНаСтудент, 2, 4) подрежда низа „ИмеНаСтудент“, започвайки от втория символ, и връща следващите 4 символа.
  • Във функцията SUBSTR(ИмеНаСтудент, 2) обаче не сме посочили число за върнатите символи, ето защо SQLite върна всички останали знаци в „StudentName“, започвайки от втората позиция.

Промяна на части от низ с SQLite Функция REPLACE

REPLACE се използва за замяна на всеки низ, възникнал на друг низ с низ.

REPLACE(X, Y, Z) – X е входният низов литерал или колона. Y е низът, който трябва да се замени с низа Z. Обърнете внимание, че той ще замени всяко появяване на низа Y с Z, а не само едно.

Пример:

В следващата заявка ще заменим всички срещания на низа „xx“ с низа „SQLite"

SELECT REPLACE('xx is very lightweight, xx is easy to learn', 'xx', 'SQLite');

Това ще ви даде

Пример за функция REPLACE в SQLite

  • Функцията за замяна замени всички низове „xx“ с низа „SQLite".
  • Така че резултатът ще бъде „SQLite е много лек, SQLite лесно се учи”.

Изрязване на празни пространства с SQLite Функция TRIM

TRIM премахва празните интервали от началото или от края на низа. Няма да премахне никакви интервали в средата на низа, само от началото или от края.

Пример:

В следващата заявка ще използваме функцията TRIM, за да премахнем празните интервали от началото и края на низа.

Имайте предвид, че операторът за конкатенация „||“ се използва за добавяне на допълнителен „;“ до края на низа. За да ви покажа, че празните места са премахнати в черния прозорец.

SELECT TRIM('      SQLite is easy to learn        ') || ';';

Това ще ви даде:

Пример за функция TRIM в SQLite

Забележете как празните интервали бяха премахнати от началото и от края на низа, заменени с ' ; ' накрая.

Четене на абсолютни стойности с SQLite ABS функция

Функцията ABS връща абсолютната стойност на числова стойност. Абсолютната стойност е числовата стойност без положителен или отрицателен знак. ABS(X) връща стойност в зависимост от стойността на X, както следва:

  • Абсолютната стойност на X, ако X е числова стойност.
  • NULL стойност, ако X е нулева стойност.
  • Стойност „0.0“, ако X е низ.

Пример:

В следната заявка ще се опитаме да получим абсолютната стойност на низ, число и нулева стойност с помощта на функцията ABS:

SELECT ABS(-2), ABS(+2), ABS('a string'), ABS(null);

Това ще ви даде:

Пример за ABS функция в SQLite

Резултатите са следните:

  • ABS(-2), ABS(+2) връща 2, защото 2 е абсолютна стойност както за „-2“, така и за „+2“.
  • ABS('низ') връща "0.0", защото сте предали стойност на низ, а не числова стойност.
  • ABS(null) връща null, защото сте предали null стойност за него.

Закръгляване на стойности с функция ROUND в SQLite

Десетичните числа са числа с плаваща запетая "." върху него, например, „20.5“, „8.65“. Частта отляво на плаващата запетая се нарича цяла част, а частта отдясно на плаващата запетая е десетичната част.

Цели числа са тези числа без плаваща запетая върху тях. Например „20“, „8“.

ROUND(X) преобразува десетичните стойности или колони X само в цели числа. Цялата част, която е частта отляво на десетичната запетая, ще бъде върната и всички цифри отдясно на десетичната запетая ще бъдат премахнати.

Пример:

В следната заявка ще опитаме функцията ROUND с различни опции:

SELECT ROUND(12.4354354), ROUND(12.4354354, 2), ROUND(NULL), ROUND('a string');

Това ще ви даде:

Пример за функция ROUND в SQLite

Резултатът е следният:

  • ROUND(12.4354354) – връща стойността „12“, защото не сте посочили броя на цифрите. така че SQLite премахна цялата десетична част.
  • ROUND(12.4354354, 2) – връща стойността „12.44“, защото сте посочили само 2 цифри за закръгляване, които са двете цифри отдясно на десетичната запетая.
  • ROUND(NULL) – връща null, защото сте му предали null стойност.
  • ROUND('низ') – връща стойността “0.0”, защото сте му предали стойност на низ.

Намиране на типа данни на израза с функцията TYPEOF

Ако искате да разберете типа на колона или литерална стойност, можете да използвате функцията TYPEOF, за да направите това.

Функцията TYPEOF(X) от нейното име връща типа данни на израза X. Тя връща низова стойност, указваща типа данни на X. Тя връща стойността въз основа на типовете данни, независимо дали е стойност „NULL“, реално, текстово, цяло число, … и т.н.

Пример:

В следната заявка ще опитаме функцията TYPEOF с различни типове литерални стойности:

SELECT TYPEOF(null), TYPEOF(12), TYPEOF(12.5), TYPEOF('a string');

Това ще ви даде:

Пример за функция TYPEOF в SQLite

Върнатите резултати са както следва:

  • TYPEOF(null) – връща null, защото сте му предали null стойност.
  • TYPEOF(12) – връща цяло число, тъй като 12 е цяло число.
  • TYPEOF(12.5) – връща REAL, тъй като 12.5 е реално число.
  • TYPEOF('низ') – връща текст, тъй като “низ” е текст.

Намиране на последния вмъкнат запис с SQLite LAST_INSERT_ROWID

SQLite присвоява целочислен ключ (Id) за всички редове във всички таблици. Този номер се използва за уникално идентифициране на тези редове.

Когато ВМЪКНЕТЕ нов ред в таблица, SQLite ще присвои на rowid уникална стойност.

Ако таблицата има първичен ключ, деклариран само в една колона и тази колона е от тип данни INTEGER, тогава стойността на тази колона ще се използва като rowid.

Функцията LAST_INSERT_ROWID() връща ROW_ID на последния вмъкнат ред във всяка таблица в базата данни. Имайте предвид, че не приема никакъв операнд.

Пример:

В следващия пример ще изпълним функцията LAST_INSERT_ROWID() както следва:

SELECT LAST_INSERT_ROWID();

Това ще ви даде:

Пример за функция LAST_INSERT_ROWID в SQLite

LAST_INSERT_ROWID() връща 0, защото няма редове, вмъкнати в нито една таблица в текущата връзка към базата данни.

Сега нека вмъкнем нов ученик и да изпълним отново функцията LAST_INSERT_ROWID() след израза за вмъкване, по следния начин:

INSERT INTO Students VALUES(11, 'guru', 1, '1998-10-12');
SELECT LAST_INSERT_ROWID();

Това ще ви даде:

Пример за функция LAST_INSERT_ROWID в SQLite

След като вмъкнем нов студент с id 11, LAST_INSERT_ROWID() ще върне последния вмъкнат id на ред, който е 11.

Получаване на вашата версия SQLite библиотека

За да получите версията на вашия SQLite библиотека, трябва да извикате функцията SQLITE_VERSION().

Пример:

Нека да разберем каква е версията на SQLite използваме, като изпълним следната команда:

SELECT SQLITE_VERSION();

Това ще ви даде:

Пример за получаване на версията на вашия SQLite библиотека

SQLITE_VERSION() връща 3.9.2, което е версията на SQLite ние използваме.

Създаване на потребителски дефинирани функции и агрегатни потребителски дефинирани функции

За някои потребители, SQLite основните функции са ограничени. Може да се наложи да добавят персонализирани функции за своите персонализирани нужди.

SQLite не поддържа създаване на дефинирани от потребителя функции. За разлика от други системи за управление на бази данни, не можете да създавате потребителски дефинирани функции в SQLite директно.

Можете обаче да създадете функция, използвайки езици за програмиране като C#, C, PHP или C++ и прикрепи тази функция към ядрото SQLite функции в SQLite самата библиотека, използвайки функцията „sqlite3_create_function“. След това можете да ги използвате повторно във вашата база данни.

Пример:

В следващия пример ще създадем потребителски дефинирана функция, използвайки езика за програмиране C#, и ще я добавим към SQLite функции:

[SQLiteFunction(Name = "DoubleValue", Arguments = 1, FuncType = FunctionType.Scalar)]
public class DoubleValue: SQLiteFunction
{
    public override object Invoke(object[] args)
    {
        return args[0] * 2;
    }
}

Този кодов фрагмент е написан в Език за програмиране C#; той създава C# функция, използвайки C# кода.

Името на функцията ще бъде „Double„Стойност“ приема един параметър и връща стойността му, умножена по 2.

Имайте предвид, че C# автоматично добавя тази функция към SQLite. Всичко, от което се нуждаете, е да компилирате и стартирате този код. Тогава C# ще добави тази функция със същото име към списъка с SQLite функции. След това можете да използвате тази функция в SQLite.

По същия начин, като използвате езици за програмиране като C#, C, PHP или C++, можете също да създадете сборни дефинирани от потребителя функции. Които се използват за разширяване на агрегатните функции в SQLite и ги използвайте за създаване на персонализирани агрегатни функции.

Въпроси и Отговори

Скаларни функции като LENGTH, UPPER и ROUND се изпълняват веднъж на ред и връщат по една стойност всяка. Агрегиращи функции като COUNT, SUM и GROUP_CONCAT обработват много редове заедно и връщат един комбиниран резултат за цялата група.

SQLite свързва низове с оператора ||, например 'a' || 'b'. По-новите версии добавят и скаларните функции concat() и concat_ws(), докато group_concat() комбинира стойности от много редове в един разделен низ.

Да. SQLite предоставя DATE, TIME, DATETIME, JULIANDAY и STRFTIME. Тези функции форматират и изчисляват дати от текст, Unix времеви марки или специалната стойност „now“, тъй като SQLite съхранява датите като TEXT, REAL или INTEGER, а не като специален тип.

По подразбиране, UPPER и LOWER променят само ASCII буквите от A до Z, така че ударенията или нелатинските знаци остават непроменени. Пълното преобразуване на главни и малки букви в Unicode изисква разширението ICU, компилирано в SQLite, което включват малко компилации по подразбиране.

Използвайте функцията INSTR(X, Y), която връща първата позиция на подниз Y в низ X, броейки от 1. Връща 0, когато поднизът липсва. Сдвоете INSTR със SUBSTR, за да получитеtract текст след съвпадащ символ.

Обвийте израза в IFNULL(X, fallback) или COALESCE(X, fallback), за да заместите стойност по подразбиране, когато функция върне null. COALESCE приема няколко аргумента и връща първата стойност, която не е null, което е полезно, когато много колони може да са празни.

Да. Копилот на GitHub предлага извиквания на LENGTH, SUBSTR, REPLACE и ROUND от коментар или име на таблица и изготвя потребителски дефиниран функционален код на C или C#. Винаги тествайте изхода му спрямо вашата схема, защото може да измисли имена на колони.

Да. Асистентите с изкуствен интелект за преобразуване на текст в SQL превръщат заявките на обикновен език в SQLite заявки, които използват низови функции като TRIM и REPLACE. Те ускоряват изработката на прототипи.ping, но все пак трябва да проверите генерирания SQL спрямо вашите данни, защото моделите за машинно обучение понякога генерират неточна логика.

Обобщете тази публикация с: