SQLite Функции за низове: REPLACE, SUBSTR, TRIM, ROUND
SQLite по подразбиране е оборудван със списък от вградени функции в рамките на SQLite библиотека. Можете също да добавите някои други персонализирани функции, като използвате езика C, за да разширите основните функции.
Обърнете внимание, че за всички следващи примери трябва да стартирате sqlite3.exe и да отворите връзка към примерната база данни като текуща:
Стъпка 1) В този етап,
- Отворете Моят компютър и отидете до следната директория „C:\sqlite" и тогава
- отвори "sqlite3.exe"
Стъпка 2) Отворете базата данни "УроциSampleDB.db” чрез следната команда:
Сега сте готови да стартирате всеки заявка и опитайте всички заявки, използвани в следващите раздели.
Намиране на LENGTH от низ в SQLite
За да намерите дължината на низ, използвайте LENGTH(X), където X е стойност на низ. Ако X е нулева стойност, функцията за дължина ще върне нулева стойност.
Можете също да използвате функцията за дължина с числови стойности, за да получите дължината на числовата стойност.
Пример:
В следващия пример ще опитаме синтаксиса на функцията LENGTH със следните стойности:
SELECT LENGTH('A string'), LENGTH(NULL), LENGTH(20), LENGTH(20.5);
Това ще ви даде:
Резултатът е следният:
- 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('низ') връща низа “струна" с главна буква "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 е началната позиция за изваждане на низа, започващ от нея.
- Z е броят знаци за анализиране, започвайки от конкретната позиция Y. Това число не е задължително, можете да го игнорирате и в този случай, SQLite ще извади низа, започващ от позицията Y, ще каже края на низа.
Пример:
В следната заявка ще използваме функцията SUBSTR, за да получим 4-те знака, започвайки от втория знак от имената на учениците:
SELECT StudentName, SUBSTR(StudentName, 2, 4), SUBSTR(StudentName, 2) FROM Students;
Това ще ви даде:
- SUBSTR(Име на ученик, 2, 4) подниз на низа "Име на ученик”, започвайки от втория знак, и връща следващите 4 знака.
- Въпреки това във функцията SUBSTR(Име на ученик, 2) не сме посочили номер за символите, които да бъдат върнати, затова SQLite върна всички останали знаци в „Име на ученик”, започвайки от втора позиция.
Промяна на части от низ с 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');
Това ще ви даде
- Функцията за замяна замени всички низове "xx" с низа "SQLite".
- Така че изходът ще бъде "SQLite е много лек, SQLite лесно се учи”.
Изрязване на празни пространства с SQLite Функция TRIM
TRIM премахва празните интервали от началото или от края на низа. Няма да премахне никакви интервали в средата на низа, само от началото или от края.
Пример:
В следващата заявка ще използваме функцията TRIM, за да премахнем празните интервали от началото и края на низа.
Имайте предвид, че операторът за конкатенация „||“ се използва за добавяне на допълнителен „;“ до края на низа. За да ви покажа, че празните места са премахнати в черния прозорец.
SELECT TRIM(' SQLite is easy to learn ') || ';';
Това ще ви даде:
- Забележете как празните интервали бяха премахнати от началото и от края на низа, заменени с ' ; ' накрая.
Четене на абсолютни стойности с 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(-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(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(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() връща 0, защото няма редове, вмъкнати в нито една таблица в текущата връзка към базата данни.
Сега нека вмъкнем нов ученик и да изпълним отново функцията LAST_INSERT_ROWID() след израза за вмъкване, по следния начин:
INSERT INTO Students VALUES(11, 'guru', 1, '1998-10-12'); SELECT LAST_INSERT_ROWID();
Това ще ви даде:
- След като вмъкнем нов студент с id 11, LAST_INSERT_ROWID() ще върне последния вмъкнат id на ред, който е 11.
Получаване на вашата версия SQLite библиотека
За да получите версията на вашия SQLite библиотека, трябва да извикате функцията SQLITE_VERSION().
Пример:
Нека да разберем каква е версията на SQLite използваме, като изпълним следната команда:
SELECT SQLITE_VERSION();
Това ще ви даде:
SQLITE_VERSION() връща 3.9.2, което е версията на SQLite ние използваме.
Създаване на потребителски дефинирани функции и агрегатни потребителски дефинирани функции
За някои потребители, SQLite основните функции са ограничени. Може да се наложи да добавят персонализирани функции за своите персонализирани нужди.
SQLite не поддържа създаване на дефинирани от потребителя функции. За разлика от други системи за управление на бази данни, не можете да създавате потребителски дефинирани функции в SQLite директно.
Можете обаче да създадете функция с помощта на езици за програмиране като C#, C, PHP или C++ и прикрепи тази функция към ядрото SQLite функции в SQLite самата библиотека, използвайки „sqlite3_create_функция” функция. След това можете да ги използвате повторно във вашата база данни.
Пример:
В следващия пример ще създадем дефинирана от потребителя функция с помощта на 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 и ги използвайте за създаване на персонализирани агрегатни функции.
Oбобщение
- SQLite предоставя изчерпателен набор от вградени функции, които правят работата с таблиците и колоните на базата данни лесна, както видяхме. Можете да използвате тези функции с колони, както и с литерални стойности във всеки израз във вашите SQL заявки.
- Можете също да използвате функцията за дължина с числови стойности, за да получите дължината на числовата стойност.
- UPPER и LOWER връща нулеви стойности, ако им подадете нулева стойност.
- Функцията SUBSTR връща определен брой низове, започвайки от конкретна позиция.
- REPLACE се използва за замяна на всеки низ, възникнал на друг низ с низ.
- TRIM премахва празните интервали от началото или от края на низа.
- Функцията ABS връща абсолютната стойност на числова стойност.
- ROUND(X) преобразува десетичните стойности или колони X само в цели числа.
- Функцията TYPEOF(X) от името си връща типа данни на израза X.
- Функцията LAST_INSERT_ROWID() връща ROW_ID на последния вмъкнат ред във всяка таблица в базата данни.