2024 日本 PHP 研討會

SQLite3::createCollation

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

SQLite3::createCollation註冊一個 PHP 函式作為 SQL 排序函式使用

說明

public SQLite3::createCollation(字串 $name, 可呼叫 $callback): 布林

註冊一個 PHP 函式或使用者自訂函式,以在 SQL 陳述式中作為排序函式使用。

參數

name

要建立或重新定義的 SQL 排序函式名稱。

callback

要作為回呼套用之 PHP 函式或使用者自訂函式的名稱,定義排序的行為。它應該接受兩個值並如同 strcmp() 一樣回傳值,即它應該回傳 -1、1 或 0,表示第一個字串排序在第二個字串之前、之後或相等。

此函式需要定義為

collation(混合 $value1, 混合 $value2): 整數

回傳值

成功時回傳 true,失敗時回傳 false

範例

範例 #1 SQLite3::createCollation() 範例

在 SQLite3 資料庫中註冊 PHP 函式 strnatcmp() 作為排序序列。

<?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
"預設排序:\n";
while (
$row = $defaultSort->fetchArray()){
echo
$row['col1'], "\n";
}

echo
"\n自然排序:\n";
while (
$row = $naturalSort->fetchArray()){
echo
$row['col1'], "\n";
}

$db->close();

?>

上述範例將輸出:

default:
a1
a10
a2

natural:
a1
a2
a10

另請參閱

新增筆記

使用者貢獻的筆記

此頁面沒有使用者貢獻的筆記。
To Top