(PHP 8 >= 8.4.0)
Pdo\Sqlite::createCollation — Enregistre une fonction utilisateur de tri pour une utilisation dans les instructions SQL
Cette méthode est similaire à Pdo\Sqlite::createFunction() sauf qu'elle enregistre des fonctions qui sont utilisées pour trier des chaînes.
name
callback
-1
, 0
, ou 1
si la première chaîne est triée avant, identique, ou après
la seconde chaîne respectivement.
Une fonction interne qui se comporte de cette manière est strcmp().
Cette fonction doit être définie comme suit :
Exemple #1 Exemple 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";
}
?>
L'exemple ci-dessus va afficher :
a1 a10 a2 a1 a2 a10