PDO::sqliteCreateCollation

(PHP 5 >= 5.3.11, PHP 7)

PDO::sqliteCreateCollation Registra una función definida por el usuario para emplearla como función de cotejo en sentencias SQL

Descripción

public PDO::sqliteCreateCollation ( string $name , callable $callback ) : bool
Advertencia

Esta función ha sido declarada EXPERIMENTAL. Su funcionamiento, nombre y la documentación que le acompaña puede cambiar sin previo aviso en futuras versiones de PHP. Utilícela bajo su propia responsabilidad.

Parámetros

name

Nombre de la función de cotejo de SQL a crear o redefinir.

callback

El nombre de una función de PHP o una definida por el usuario para aplicarla como retrollamada, definiendo el comportamiento del cotejamiento. Debería aceptar dos cadenas y devolver lo mismo que strcmp(), es decir, debería devolver -1, 1, o 0 si la primera cadena es anterior en orden, posterior, o es igual a la segunda.

Es necesario definir esta función como:

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

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Ejemplos

Ejemplo #1 Ejemplo de PDO::sqliteCreateCollation()

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

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

El resultado del ejemplo sería:

a1
a10
a2

a1
a2
a10

Notas

Nota:

Este método no está disponible con el controlador de SQLite2. Use la API de sqlite del estilo antiguo en su lugar.