Если вы не можете позволить себе скомпилировать расширение ICU, вы можете сделать то же самое с UDF. В PHP / PDO:
$pdo->sqliteCreateFunction('locale',
function ($data, $locale = 'root')
{
static $collators = array();
if (isset($collators[$locale]) !== true)
{
$collators[$locale] = new \Collator($locale);
}
return $collators[$locale]->getSortKey($data);
}
);
Пример использования:
SELECT * FROM "table" ORDER BY locale("column", 'pt_PT');
Я не ожидаю, что этот подход будет столь же эффективным, как собственное расширение, но он, безусловно, более переносим.