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 поверне нульове значення.
Ви також можете використовувати функцію length із числовими значеннями, щоб отримати довжину числового значення.
приклад:
У наступному прикладі ми спробуємо синтаксис функції 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('рядок') повертає рядок “рядок«великою літерою»STRING».
- LOWER('A STRING') повертає рядок "STRING"з маленької літери"рядок».
- UPPER(20), LOWER(20) повертає те саме число, оскільки вони не впливають на числа.
- UPPER(NULL), LOWER(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) – повертає нуль, оскільки ви передали йому нульове значення.
- ROUND('рядок') – повертає значення “0.0”, оскільки ви передали йому рядкове значення.
Пошук типу даних виразу за допомогою функції TYPEOF
Якщо ви хочете дізнатися тип стовпця або значення літералу, ви можете використовувати для цього функцію TYPEOF.
Функція TYPEOF(X), виходячи з назви, повертає тип даних виразу X. Вона повертає рядкове значення, яке вказує на тип даних X. Вона повертає значення на основі типів даних, незалежно від того, чи є воно значенням «NULL», дійсний, текстовий, цілий, … тощо.
приклад:
У наступному запиті ми спробуємо функцію TYPEOF з різними типами літеральних значень:
SELECT TYPEOF(null), TYPEOF(12), TYPEOF(12.5), TYPEOF('a string');
Це дасть вам:
Повернені результати такі:
- TYPEOF(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();
Це дасть вам:
- Після того, як ми вставили нового студента з ідентифікатором 11, LAST_INSERT_ROWID() поверне ідентифікатор останнього вставленого рядка, який дорівнює 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_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 і використовувати їх для створення спеціальних агрегатних функцій.
Підсумки
- SQLite надає повний набір вбудованих функцій, які полегшують роботу з таблицями та стовпцями бази даних, як ми бачили. Ви можете використовувати ці функції зі стовпцями, а також із літеральними значеннями в будь-якому виразі у своїх запитах SQL.
- Ви також можете використовувати функцію length із числовими значеннями, щоб отримати довжину числового значення.
- UPPER і LOWER повертає нульові значення, якщо ви передаєте їм нульове значення.
- Функція SUBSTR повертає певну кількість рядків, починаючи з певної позиції.
- REPLACE використовується для заміни кожного рядка на інший рядок на рядок.
- TRIM видаляє пробіли на початку або в кінці рядка.
- Функція ABS повертає абсолютне значення числового значення.
- ROUND(X) перетворює десяткові значення або стовпці X лише на цілі числа.
- Функція TYPEOF(X), судячи з назви, повертає тип даних виразу X.
- Функція LAST_INSERT_ROWID() повертає ROW_ID останнього вставленого рядка в будь-якій таблиці бази даних.