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을 반환해야 합니다.

이 함수는 다음과 같이 정의해야 합니다.

collation(mixed $value1, mixed $value2): int


반환 값

성공하면 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
                

기타