PDO::sqliteCreateCollation

(PHP 5 >= 5.3.11, PHP 7, PHP 8)

PDO::sqliteCreateCollation 注册一个用户定义函数作为 SQL 语句中的排序函数

描述

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

此函数为实验性。此函数的行为、名称以及周围的文档可能会在 PHP 的未来版本中发生变化,恕不另行通知。使用此函数风险自负。

参数

name

要创建或重新定义的 SQL 排序函数的名称。

callback

要作为回调应用的 PHP 函数或用户定义函数的名称,用于定义排序的行为。它应该接受两个字符串并像 strcmp() 一样返回,即如果第一个字符串在第二个字符串之前排序、在第二个字符串之后排序或等于第二个字符串,则应返回 -1、1 或 0。

此函数需要定义为

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

返回值

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

示例

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

上面的示例将输出

a1
a10
a2

a1
a2
a10

添加说明

用户贡献说明

此页面没有用户贡献的说明。
To Top