[postgreSQL] Recherche sans casse

Recherche sans casse [postgreSQL] - SQL/NoSQL - Programmation

Marsh Posté le 05-02-2003 à 17:19:46    

salut !
 
je voudrais savoir s'il est possible de faire une requete sur des valeurs, sans tenir compte de la casse, i.e. sans accent et sans majuscule...
 
par exemple Aré = are rend vrai
 
J'ai cherché mais je n'ai rien trouvé pour l'instant.
 
merci

Reply

Marsh Posté le 05-02-2003 à 17:19:46   

Reply

Marsh Posté le 06-02-2003 à 09:43:05    

Predicator a écrit :

salut !
 
je voudrais savoir s'il est possible de faire une requete sur des valeurs, sans tenir compte de la casse, i.e. sans accent et sans majuscule...
 
par exemple Aré = are rend vrai
 
J'ai cherché mais je n'ai rien trouvé pour l'instant.
 
merci


 
la reponse est oui en  

  • mettant un caractere generique pour les accentués
  • pour ignorer le majuscule/minuscule il y a un truc a faire  

sur la syntaxe de recherche...
 
là je suis au boulot et j'ai pas mon bouquin sous la main, mais si j'y penses je t'enverrai un mail avec la syntaxe.


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 06-02-2003 à 10:12:04    

merci, j'ai trouvé pour les majuscules, mais le coup des caractères générique, c'est pas forcément idéal, car on peut se retrouver avec des résultats non cohérents...
 
par exemple :
 
aré = ark
 
en mettant un caractère générique pour le 'é'
 
par contre, j'ai pensé à une solution, mais ne connaissant pas pgSQL, je ne sais pas si c'est valable...
 
SELECT *
WHERE utf-8_to_ascii(lower(valeur)) = utf-8_to_ascii(lower('ma chaine';))
 
cette méthode me fait me poser plusieurs questions
 
utf-8_to_ascii(lower(valeur))
 
valeur est le nom de la colonne... peut on accéder à la valeur de la colonne comme ça ? est-ce valide ?
peut-on modifier (utf8-_to_ascii) sans modifier la valeur inscrite dans la BDD ?
 
je me rends compte ensuite que passer 'é' en ascii retourne un '?' et non un 'e'...
ma méthode marche pas :cry:  

Reply

Marsh Posté le 06-02-2003 à 10:51:57    

ben déjà tu peux utiliser ilike, pour une recherche par regexp sans tenir compte de la casse. Par contre, je ne sais pas pour les accents, regarde la doc de ilike.

Reply

Marsh Posté le 12-02-2003 à 22:26:39    

UTF 8, c'est pas la norme anglaise? Et si tu essayais avec la française? Il apprécierait peut etre plus les accents.


---------------
Mise à jour du palmarès des crash : 1 lecteur CD, 1 lecteur disquette, 1 graveur, 1 CM, 3 DD IBM40Go, 1 DDR256MoPC2100 et une alim Fortron... à qui le tour? :)
Reply

Marsh Posté le 13-02-2003 à 10:21:56    

mat35 a écrit :

UTF 8, c'est pas la norme anglaise? Et si tu essayais avec la française? Il apprécierait peut etre plus les accents.


 
le problème n'est pas qu'il accepte ou pas les accents
UTF-8 est un codage d'UNICODE, comme il en existe d'autres, à partir de là, tu peux mettre des accents n'importe où... mon problème est de pouvoir faire une recherche sans accent...
 
par exemple, si un utilisateur fait une recherche sur "aue", il doit pouvoir avoir "äùé" dans son résultat (si c'est dans la base bien sûr). seulement voilà, il n'y a aucun lien entre un caractère (e) et ses version accentuées (é,è,ë,...)
 
je travaille avec quelqu'un qui s'y connait pas mal, il m'a expliqué que UTF-8 n'est pas le meilleur codage d'UNICODE (mais le seul existant dans PostgreSQL, malheureusement). Il existe une version d'encodage d'UNICODE ou les caractère et les lettre sont séparés, bien que ce soit transparent à l'utilisation...
 
par exemple "äùé" devient dans ce codage "a¨u`e'"
c'est une piste à fouiller, je vous tiendrai au courant...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed