(PHP 5 >= 5.3.11, PHP 7, PHP 8)
PDO::sqliteCreateCollation — Registra uma Função Definida pelo Usuário para uso como função de collation em declarações SQL
Esta função é EXPERIMENTAL. O comportamento desta função, seu nome e documentação poderão mudar sem aviso prévio em futuras versões do PHP. Use por sua conta e risco.
name
Nome da função de collation SQL a ser criada ou redefinida.
callback
O nome de uma função PHP ou função definida pelo usuário a ser aplicada como chamada de retorno, definindo o comportamento da collation. Ela deve aceitar duas strings e retornar como strcmp(), ou seja, deve retornar -1, 1 ou 0 se a primeira string for ordenada antes, depois ou for igual à segunda.
Esta função precisa ser definida como:
Retorna true
em caso de sucesso ou false
em caso de falha.
Exemplo #1 Exemplo de PDO::sqliteCreateCollation()
<?php
$db = new PDO('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";
}
?>
O exemplo acima produzirá:
a1 a10 a2 a1 a2 a10