(PHP 5 >= 5.3.11, PHP 7, PHP 8)
SQLite3::createCollation — Registra uma função PHP para uso como uma função de comparação de SQL
Registra uma função PHP ou função definida pelo usuário para uso como uma função de comparação dentro de instruções SQL.
name
Nome da função de comparação de SQL a ser criada ou redefinida
callback
O nome de uma função PHP ou função definida pelo usuário para aplicar como um callback, definindo o comportamento da comparação. Ela deve aceitar dois valores e retornar como strcmp() faz, ou seja, deve retornar -1, 1 ou 0 se a primeira string ordena antes, ordena depois ou é igual à segunda.
Esta função precisa ser definida como:
Exemplo #1 Exemplo de SQLite3::createCollation()
Registre a função PHP strnatcmp() como uma sequência de comparação no banco de dados SQLite3.
<?php
$db = new SQLite3(":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->createCollation('NATURAL_CMP', 'strnatcmp');
$defaultSort = $db->query("SELECT col1 FROM test ORDER BY col1");
$naturalSort = $db->query("SELECT col1 FROM test ORDER BY col1 COLLATE NATURAL_CMP");
echo "default:\n";
while ($row = $defaultSort->fetchArray()){
echo $row['col1'], "\n";
}
echo "\nnatural:\n";
while ($row = $naturalSort->fetchArray()){
echo $row['col1'], "\n";
}
$db->close();
?>
O exemplo acima produzirá:
default: a1 a10 a2 natural: a1 a2 a10