PDO::sqliteCreateCollation

(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

Descrição

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

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.

Parâmetros

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:

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

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Exemplos

Example #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