SQLite3::createCollation
(PHP 5 >= 5.3.11, PHP 7, PHP 8)
SQLite3::createCollation — SQL 조합 함수로 사용할 PHP 함수를 등록합니다.
설명
public SQLite3::createCollation(string $name
, callable $callback
): bool
SQL 문 내에서 조합 함수로 사용할 PHP 함수 또는 사용자 정의 함수를 등록합니다.
매개변수
name
- 생성 또는 재정의할 SQL 조합 함수의 이름
callback
- 콜백으로 적용할 PHP 함수 또는 사용자 정의 함수의 이름으로, 데이터 정렬 동작을 정의합니다. 두 개의 값을 허용하고 strcmp()가 하는 것처럼 반환해야 합니다. 즉, 첫 번째 문자열이 이전에 정렬되거나 이후에 정렬되거나 두 번째 문자열과 같으면 -1, 1 또는 0을 반환해야 합니다.
이 함수는 다음과 같이 정의해야 합니다.
반환 값
성공하면 true
를, 실패하면 false
를 반환합니다.
Examples
예제 #1 SQLite3::createCollation() 예제
PHP 함수 strnatcmp()를 SQLite3 데이터베이스의 조합 시퀀스로 등록합니다.
<?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 "default:\n";
while ($row = $defaultSort->fetchArray()){
echo $row['col1'], "\n";
}
echo "\nnatural:\n";
while ($row = $naturalSort->fetchArray()){
echo $row['col1'], "\n";
}
$db->close();
?>
위의 예는 다음을 출력합니다.
default: a1 a10 a2 natural: a1 a2 a10
기타
- SQLite 데이터 정렬 문서: » http://sqlite.org/datatype3.html#collation