PHP Conference Japan 2024

Pdo\Sqlite::createCollation

(PHP 8 >= 8.4.0)

Pdo\Sqlite::createCollation注册一个用户定义函数,用作 SQL 语句中的排序函数

描述

public Pdo\Sqlite::createCollation(string $name, callable $callback): bool

此方法类似于Pdo\Sqlite::createFunction(),但它注册用于对字符串进行排序的函数。

参数

name
要创建或重新定义的 SQL 排序函数的名称。
callback
定义排序行为的回调函数。它必须接受两个string并分别返回-101,如果第一个字符串在第二个字符串之前排序、与第二个字符串相同排序或在第二个字符串之后排序。一个具有这种行为的内部函数是strcmp()

此函数需要定义为

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

返回值

成功时返回true,失败时返回false

示例

示例 #1 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";
}
?>

以上示例将输出

a1
a10
a2

a1
a2
a10

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top