小巧. 快速. 可靠.
三选其二.

SQLite C 接口

排序所需的回调

int sqlite3_collation_needed(
  sqlite3*,
  void*,
  void(*)(void*,sqlite3*,int eTextRep,const char*)
);
int sqlite3_collation_needed16(
  sqlite3*,
  void*,
  void(*)(void*,sqlite3*,int eTextRep,const void*)
);

为了避免必须在使用数据库之前注册所有排序序列,可以在 数据库连接 上注册单个回调函数,以便在需要未定义的排序序列时调用。

如果使用 sqlite3_collation_needed() API 注册函数,则会将未定义排序序列的名称作为 UTF-8 编码的字符串传递给它。如果使用 sqlite3_collation_needed16(),则名称将作为机器原生字节顺序的 UTF-16 传递。对任一函数的调用都会替换现有的排序需求回调。

当回调被调用时,传递的第一个参数是 sqlite3_collation_needed() 或 sqlite3_collation_needed16() 的第二个参数的副本。第二个参数是数据库连接。第三个参数是 SQLITE_UTF8SQLITE_UTF16BESQLITE_UTF16LE 之一,表示所需排序序列函数的最优形式。第四个参数是所需排序序列的名称。

回调函数应该使用 sqlite3_create_collation()sqlite3_create_collation16()sqlite3_create_collation_v2() 注册所需的排序。

另请参阅 对象常量函数 的列表。