Строковые функции SQLite: REPLACE, SUBSTR, TRIM, ROUND (примеры)

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

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

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

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

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

Шаг 2) Открыть базу данных ' УчебникиSampleDB.db 'следующей командой:

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

Определение ДЛИНЫ строки

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

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

Пример

В следующем примере мы попробуем использовать синтаксис функции ДЛИНА со следующими значениями:

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

Это даст вам:

Результат такой:

  • LENGTH ('A string') возвращает 8, что является длиной строки 'A string'.
  • LENGTH (NULL) возвращает значение 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 ('A STRING') возвращает строку ' СТРОКА 'строчными буквами' строка '.
  • UPPER (20), LOWER (20) возвращает одно и то же число, поскольку они не влияют на числа.
  • UPPER (NULL), LOWER (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, а не только одно.

Пример

В следующем запросе мы заменим все вхождения строки ' хх 'со строкой' SQLite ':

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

Это даст вам

  • Функция replace заменила все строки ' хх 'со строкой' SQLite '.
  • Таким образом, вывод будет «SQLite очень легкий, SQLite легко изучить».

Обрезка пустых пространств с помощью функции TRIM

TRIM удаляет пробелы в начале или в конце строки. Он не удаляет пробелы в середине строки, только с начала или с конца.

Пример:

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

Обратите внимание, что оператор конкатенации '||' используется для добавления дополнительного символа ';' до конца строки. Чтобы показать вам, что в черном окне были удалены пустые места.

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

Это даст вам:

  • Обратите внимание, как в начале и в конце строки были удалены пробелы, замененные на '; ' в конце.

Чтение абсолютных значений с помощью функции ABS

Функция ABS возвращает абсолютное значение числового значения. Абсолютное значение - это числовое значение без положительного или отрицательного знака. ABS (X) возвращает значение, зависящее от значения X, как показано ниже:

  • Абсолютное значение X, если X - числовое значение.
  • Значение NULL, если X - значение NULL.
  • Значение «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, потому что вы передали для него нулевое значение.

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

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

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

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

Пример:

В следующем запросе мы попробуем функцию ОКРУГЛ с различными параметрами:

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

Это даст вам:

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

  • ОКРУГЛ (12.4354354) - возвращает значение «12», потому что вы не указали количество цифр. Итак, SQLite удалил всю десятичную часть.
  • ОКРУГЛ (12,4354354, 2) - возвращает значение «12,44», потому что вы указали только 2 цифры для округления, которые являются двумя цифрами справа от десятичной точки.
  • ROUND (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, потому что вы передали ему нулевое значение.
  • 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 #.

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

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

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

Резюме

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