Учебники

11) Функции

SQLite оборудован по умолчанию списком встроенных функций в библиотеке SQLite. Вы также можете добавить некоторые другие пользовательские функции, используя язык C для расширения основных функций.

В этом уроке вы узнаете

Обратите внимание, что для всех следующих примеров вы должны запустить sqlite3.exe и открыть соединение с образцом базы данных как текущее:

Шаг 1) На этом этапе

  1. Откройте «Мой компьютер» и перейдите в следующий каталог « C: \ sqlite », а затем
  2. открыть » sqlite3.exe «:

Функции SQLite - ЗАМЕНА, ТРИМ, АБС, КРУГЛЫЙ, ДЛИНА, СУБСТРА

Шаг 2) Откройте базу данных « TutorialsSampleDB.db » с помощью следующей команды:

Функции SQLite - ЗАМЕНА, ТРИМ, АБС, КРУГЛЫЙ, ДЛИНА, СУБСТРА

Теперь вы готовы выполнить любой запрос и попробовать любые запросы, используемые в следующих разделах.

Нахождение ДЛИНЫ струны

Чтобы найти длину строки, используйте LENGTH (X), где X — строковое значение. Если X является нулевым значением, функция длины возвратит нулевое значение.

Вы также можете использовать функцию длины с числовыми значениями, чтобы получить длину числового значения.

пример

В следующем примере мы попробуем синтаксис функции LENGTH со следующими значениями:

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

Это даст вам:

Функции SQLite - ЗАМЕНА, ТРИМ, АБС, КРУГЛЫЙ, ДЛИНА, СУБСТРА

Результат выглядит следующим образом:

  • LENGTH (‘A string’) возвращает 8, которое является длиной строки «A string».
  • LENGTH (NULL) возвращает ноль.
  • LENGTH (20) возвращает 2, потому что 20 имеет длину 2 длины.
  • ДЛИНА (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);

Это даст вам:

Функции SQLite - ЗАМЕНА, ТРИМ, АБС, КРУГЛЫЙ, ДЛИНА, СУБСТРА

Результат выглядит следующим образом:

  • UPPER (‘строка’) возвращает строку » строка » в представлении заглавной буквы » A STRING «.
  • LOWER (‘A STRING’) возвращает строку « A 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;

Это даст вам:

Функции SQLite - ЗАМЕНА, ТРИМ, АБС, КРУГЛЫЙ, ДЛИНА, СУБСТРА

  • SUBSTR (StudentName, 2, 4) подставляет строку « StudentName », начиная со второго символа, и возвращает следующие 4 символа.
  • Однако в функции SUBSTR (StudentName, 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');

Это даст вам

Функции SQLite - ЗАМЕНА, ТРИМ, АБС, КРУГЛЫЙ, ДЛИНА, СУБСТРА

  • Функция замены заменила все строки » xx » на строку » 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);

Это даст вам:

Функции SQLite - ЗАМЕНА, ТРИМ, АБС, КРУГЛЫЙ, ДЛИНА, СУБСТРА

Результаты как следующие:

  • ABS (-2), ABS (+2) возвращает 2, потому что 2 является абсолютным значением как для «-2», так и для «+2».
  • ABS (‘строка’) возвращает «0.0», потому что вы передали строковое значение, а не числовое значение.
  • ABS (нуль) возвращает ноль, потому что вы передали ему нулевое значение.

Округление значений с помощью функции ROUND

Десятичные числа — это числа с плавающей точкой «.» на нем, например, «20,5», «8,65». Часть слева от плавающей запятой называется целочисленной, а часть справа от плавающей запятой — десятичной.

Целые числа — это числа без плавающей запятой. Например, «20», «8».

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

Пример:

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

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

Это даст вам:

Функции SQLite - ЗАМЕНА, ТРИМ, АБС, КРУГЛЫЙ, ДЛИНА, СУБСТРА

Результат следующим образом:

  • ROUND (12.4354354) — возвращает значение «12», поскольку вы не указали количество цифр. Итак, SQLite убрал всю десятичную часть.
  • ROUND (12.4354354, 2) — возвращает значение «12.44», потому что вы указали только 2 цифры для округления, которые являются двумя цифрами справа от десятичной точки.
  • ROUND (NULL) — возвращает ноль, потому что вы передали ему нулевое значение.
  • ROUND (‘строка’) — возвращает значение «0.0», потому что вы передали ему строковое значение.

Поиск типа данных выражения с помощью функции TYPEOF

Если вы хотите узнать тип столбца или литеральное значение, вы можете использовать функцию TYPEOF для этого.

Функция TYPEOF (X) по своему имени возвращает тип данных выражения X. Возвращает строковое значение, указывающее тип данных X. Возвращает значение на основе типов данных, независимо от того, является ли оно значением «NULL», real, text, integer, … и т. д.

пример

В следующем запросе мы попробуем функцию TYPEOF с различными типами литеральных значений:

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

Это даст вам:

Функции SQLite - ЗАМЕНА, ТРИМ, АБС, КРУГЛЫЙ, ДЛИНА, СУБСТРА

Возвращенные результаты следующие:

  • TYPEOF (null) — возвращает null, поскольку вы передали ему нулевое значение.
  • TYPEOF (12) — возвращает целое число, так как 12 является целым числом.
  • TYPEOF (12.5) — возвращает REAL, поскольку 12.5 — действительное число.
  • TYPEOF (‘строка’) — возвращает текст, поскольку «строка» является текстом.

Поиск последней вставленной записи с помощью SQLite LAST_INSERT_ROWID

SQLite назначает целочисленный ключ (Id) для всех строк во всех таблицах. Этот номер используется для уникальной идентификации этих строк.

Когда вы ВСТАВЛЯЕТЕ новую строку в таблицу, SQLite присваивает ей уникальный идентификатор.

Если таблица имеет первичный ключ, объявленный только для одного столбца, и этот столбец имеет тип данных INTEGER, то это значение столбца будет использоваться в качестве rowid.

Функция LAST_INSERT_ROWID () возвращает ROW_ID последней вставленной строки в любой таблице в базе данных. Обратите внимание, что это не займет никакого операнда.

пример

В следующем примере мы запустим функцию LAST_INSERT_ROWID () следующим образом:

SELECT 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();

Это даст вам:

Функции SQLite - ЗАМЕНА, ТРИМ, АБС, КРУГЛЫЙ, ДЛИНА, СУБСТРА

  • После того, как мы вставили нового студента с идентификатором 11, LAST_INSERT_ROWID () вернет идентификатор последней вставленной строки, который равен 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 #.

Имя функции будет « DoubleValue », оно принимает один параметр и возвращает его значение, умноженное на 2.

Обратите внимание, что C # автоматически добавляет эту функцию в SQLite. Все, что вам нужно, это скомпилировать и запустить этот код. Затем C # добавит эту функцию с тем же именем в список функций SQLite. Затем вы можете использовать эту функцию в SQLite.

Таким же образом, используя языки программирования, такие как C #, C, PHP или C ++, вы также можете создавать совокупные пользовательские функции. Которые используются для расширения агрегатных функций в SQLite и использования их для создания пользовательских агрегатных функций.

Резюме

SQLite предоставляет полный набор встроенных функций, которые, как мы видели, упрощают работу с таблицами и столбцами базы данных. Вы можете использовать эти функции со столбцами, а также с литеральными значениями в любом выражении в ваших SQL-запросах.