Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD > SQLite
SQLite Forum d'entraide SQLite
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/12/2006, 11h19   #1
Invité régulier
 
Inscription : mai 2004
Messages : 35
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 35
Points : 9
Points : 9
Par défaut Accents et SELCT sous SQLite

Dans le cas d'un SELECT sur des champs TEXT, SQLite différencie les caractères accentués et non accentués. Exemple : theatre est différent de théâtre. Y a-t-il moyen de changer ce comportement ?
ecocentric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2007, 20h22   #2
Invité de passage
 
Inscription : janvier 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 2
Points : 2
Points : 2
Cette question m'intéresse aussi car je rencontre le même problème.
Je n'ai trouvé qu'une documentation trés succinte sur les collations dans le manuel sqlite: http://www.sqlite.org/datatype3.html (vers la fin de la page)

Apparemment en standart il n'y a qu'une collation binaire et une collation qui ne prend pas en compte la casse... mais rien pour les accents.

Toute aide et la bienvenue, j'ai bien pensé à contourner le problème mais c'est relativement couteux en performances et/ou en code.
collation est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2007, 08h40   #3
Invité de passage
 
Inscription : janvier 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 2
Points : 2
Points : 2
et bien je me réponds tout seul... mais ça peut servir à d'autres :

(pour PHP !)

j'ai fait une petite fonction qui supprime les caractères diacritiques (les principaux en tout cas) :
Code :
1
2
3
4
5
6
7
8
9
 
<?php
  FUNCTION noDiacritics($string)
  {
    $ascii_string= strtr($string,utf8_decode("ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ"),
                                "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn");
    RETURN $ascii_string;
  }
?>
puis j'enregistre la fonction en tant qu'UDF pour l'objet sqlite :

Code :
1
2
3
4
 
<?php
$dbh->createFunction('noDiacritics','noDiacritics');
?>
et aprés il n'y a plus qu'a appeler cette fonction dans la requête sql:

Code :
SELECT * FROM toto WHERE noDiacritics(monChamp) LIKE 'bidule'
Reste un problème... en fonction de la taille de la table ça peut couter trés trés cher en performance. Je suis preneur d'une meilleure solution ou de quelque chose qui permettrait d'accélérer tout ça...
collation est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2007, 19h48   #4
Invité régulier
 
Inscription : mai 2004
Messages : 35
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 35
Points : 9
Points : 9
C'est amusant, à quelques années d'intervale, on est arrivé à la même solution.

Sauf que, comme tu le dis bien, c'est très coûteux.

Pour une requête type, je passe de 0,4 à 4 sec, en ajoutant la fonction dans la requête SQL.

Bref, si qqn a trouvé une solution plus simple, je suis aussi toujours preneur ;-) !
ecocentric est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h22.


 
 
 
 
Partenaires

Hébergement Web