(PHP 5 >= 5.3.11, PHP 7, PHP 8)
SQLite3::createCollation — 註冊一個 PHP 函式作為 SQL 排序函式使用
註冊一個 PHP 函式或使用者自訂函式,以在 SQL 陳述式中作為排序函式使用。
name
要建立或重新定義的 SQL 排序函式名稱。
callback
要作為回呼套用之 PHP 函式或使用者自訂函式的名稱,定義排序的行為。它應該接受兩個值並如同 strcmp() 一樣回傳值,即它應該回傳 -1、1 或 0,表示第一個字串排序在第二個字串之前、之後或相等。
此函式需要定義為
範例 #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