PHP 8.4.2 Released!

Pdo\Sqlite::createCollation

(PHP 8 >= 8.4.0)

Pdo\Sqlite::createCollation Регистрирует определяемую пользователем функцию для использования в качестве функции сопоставления в SQL-выражениях

Описание

public Pdo\Sqlite::createCollation(string $name, callable $callback): bool

Метод похож на Pdo\Sqlite::createFunction(), за исключением того, что он регистрирует функции, которые используются для сортировки строк.

Список параметров

name
Имя создаваемой или переопределяемой SQL-функции сортировки.
callback
Callback-функция, определяющая поведение сортировки. Должна принимать две строки (string) и возвращать значение -1, 0 или 1, если первая строка сортируется до, сортируется идентично или сортируется после второй строки соответственно. Встроенной функцией, которая ведёт себя подобным образом, является strcmp().

Сигнатура функции должна быть определена как:

collation(string $string1, string $string2): int

Возвращаемые значения

Функция возвращает true, если выполнилась успешно, или false, если возникла ошибка.

Примеры

Пример #1 Пример использования метода Pdo\Sqlite::createCollation()

<?php
$db
= new Pdo\Sqlite('sqlite::memory:');
$db->exec("CREATE TABLE test (col1 string)");
$db->exec("INSERT INTO test VALUES ('a1')");
$db->exec("INSERT INTO test VALUES ('a10')");
$db->exec("INSERT INTO test VALUES ('a2')");

$db->sqliteCreateCollation('NATURAL_CMP', 'strnatcmp');
foreach (
$db->query("SELECT col1 FROM test ORDER BY col1") as $row) {
echo
$row['col1'] . "\n";
}
echo
"\n";
foreach (
$db->query("SELECT col1 FROM test ORDER BY col1 COLLATE NATURAL_CMP") as $row) {
echo
$row['col1'] . "\n";
}
?>

Результат выполнения приведённого примера:

a1
a10
a2

a1
a2
a10

Смотрите также

  • Pdo\Sqlite::createFunction() - Регистрирует определяемую пользователем функцию для использования в SQL-выражениях
  • Pdo\Sqlite::createAggregate() - Регистрирует агрегирующую пользовательскую функцию для использования в SQL-выражениях
  • sqlite_create_function()
  • sqlite_create_aggregate()
Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top