Existe-t-il un moyen de faire une recherche accent/diacritique insensible dans sqlite? Sur Google, j'ai trouvé this, mais je ne sais pas comment créer ma "fonction de collation" en C#. J'essaie de créer la collation pt-br pour Sqlite ...Comment implémenter la recherche accent/diacritique insensible dans Sqlite?
Répondre
Bien qu'il soit possible d'écrire votre propre collation, cela peut être plus lent qu'avec un système fourni - SQL_Latin1_General_CP1_CI_AS ne répond pas à vos besoins , par exemple? Si c'est le cas, utilisez simplement les clauses COLLATE appropriées (que ce soit sur vos requêtes SELECT ou CREATE TABLE ...) et vous devriez tous être définis.
Cette collation est-elle disponible dans SQlite? – Trainee4Life
Si vous utilisez System.Data.Sqlite vous pouvez utiliser une séquence de classement personnalisé et de le modifier pour vos besoins ... un exemple:
/// <summary>
/// User-defined collating sequence using the current UI culture.
/// </summary>
[SQLiteFunction(Name = "MYSEQUENCE", FuncType = FunctionType.Collation)]
class MySequence : SQLiteFunction
{
public override int Compare(string param1, string param2)
{
return String.Compare(param1, param2, true);
}
}
Votre requête SQL pour utiliser la séquence de classement personnalisé ci-dessus pourrait ressembler à ceci: SELECT * FROM MyTable ORDER BY MyChineseColumn COLLATE MYSEQUENCE
DESC(source: http://sqlite.phxsoftware.com/forums/p/862/3779.aspx#3779)
Vous ne pouvez définir le classement à la création de la table et de construire des indices sur tha t colonne. Mais rappelez-vous, vous ne serez pas en mesure d'accéder à la table d'autres moteurs sqlite où le classement n'est pas défini.
Est-ce que la réponse de Doug vous a aidé? Si oui, s'il vous plaît partagez comment vous avez réussi à faire une recherche accent/diacritique insensible? – Trainee4Life