PHP Conference Nagoya 2025

PDO::sqliteCreateCollation

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

PDO::sqliteCreateCollation SQL文で collate 関数として使うユーザー定義関数を登録する

説明

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

この関数は、 実験的 なものです。この関数の動作・ 名前・その他ドキュメントに書かれている事項は、予告なく、将来的な PHP のリリースにおいて変更される可能性があります。 この関数は自己責任で使用してください。

パラメータ

name

作成または再定義する SQL collate 関数の名前

callback

collation の振る舞いを定義する、PHP関数または、 コールバックとして適用するユーザー定義関数。 2つの値を受けとり、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

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top