Pdo\Sqlite::createCollation

(PHP 8 >= 8.4.0)

Pdo\Sqlite::createCollation Registra una función de usuario de ordenación para su uso en las sentencias SQL

Descripción

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

Este método es similar a Pdo\Sqlite::createFunction() salvo que registra funciones que se utilizan para ordenar strings.

Parámetros

name

El nombre de la función de ordenación SQL a crear o redefinir.

callback

La retrollamada que define el comportamiento de una ordenación. Debe aceptar dos strings y devolver -1, 0, o 1 si el primer string se ordena antes, es idéntico o después del segundo string respectivamente. Una función interna que se comporta de esta manera es strcmp().

Esta función debe ser definida como sigue:

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

Valores devueltos

Esta función retorna true en caso de éxito o false si ocurre un error.

Errores/Excepciones

Se lanza un TypeError si la callback no devuelve un valor de tipo int.

Historial de cambios

Versión Descripción
8.4.0 Ahora se lanza un TypeError si la callback no devuelve un valor de tipo int; anteriormente el valor devuelto era convertido a int.

Ejemplos

Ejemplo #1 Ejemplo de 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";
}
?>

El ejemplo anterior mostrará:

a1
a10
a2

a1
a2
a10

Véase también

add a note

User Contributed Notes

There are no user contributed notes for this page.