recherche SQL

recherche SQL - SQL/NoSQL - Programmation

Marsh Posté le 10-05-2006 à 15:16:45    

Salut,
 
une question que je me pose. Imaginons que j'ai ca dans ma base :

Code :
  1. azerty
  2. totoland
  3. coconuts
  4. avare
  5. ...


 
Je veux afficher tous les mots commencant par 'a'. Est-ce optimisé de faire un :

Code :
  1. SELECT monChamps FROM maTable WHERE monChamps LIKE 'a%'


 
N'y a t-il pas une solution moins gourmande (:D) ?
 
Autre question, est-il judicieux de faire un :
 

Code :
  1. mysql_query("INSERT INTO maTable VALUES ('".htmlentities("monChamps" )."')"


 
En effet, pour une recherche si mon champs contient des accents, cela va être ennuyeux, non ?
Notamment si on veut sortir "pépé" en tappant "pepe".
 
Merci  :hello:


Message édité par $man le 10-05-2006 à 15:44:21
Reply

Marsh Posté le 10-05-2006 à 15:16:45   

Reply

Marsh Posté le 10-05-2006 à 17:31:28    

pour ta première question, je ne connais pas de manière plus efficace.
 
pour ta seconde question tout dépend du sgbd que tu utilises, c'est soit la création d'une fonction dédiée soit l'utilisation d'une fonction déjà intégrée au sgbd comme TRANSLATE pour Oracle.

Reply

Marsh Posté le 10-05-2006 à 18:17:10    

Pour la question 1, merci, pour la seconde Mysql (mysql_query :D)
 
Merci :hello:


Message édité par $man le 10-05-2006 à 18:17:20
Reply

Marsh Posté le 11-05-2006 à 09:59:39    

Personne pour la question 2 à 3k€ Jean-Pierre ?
:hello:

Reply

Marsh Posté le 11-05-2006 à 14:56:33    

pour la question 1, tu mets un index fulltext qui sera certainement plus efficace qu'un like sur le long terme. Et selon ton besoin et volumetrie, il faudra sans doute passer à plus serieux comme methode.
Et pour le stockage des mots, perso je vire les accents pour les recherches. Mais dans ton cas, ca t'oblige à avoir un champ avec le mot d'origine et un second avec le preparé pour la recherche.


---------------
MZP est de retour
Reply

Marsh Posté le 11-05-2006 à 16:13:03    

Merci, mes champs sont déjà en fulltext (match et against inside).
Donc je suis obligé de rentré mes mots tels quels dans la BDD.

Code :
  1. pépé

et non pas

Code :
  1. pépé


Message édité par $man le 11-05-2006 à 16:13:28
Reply

Marsh Posté le 11-05-2006 à 17:13:51    

on ne mets pas de htmlentities dans la base. Tu transformes à la volée pour l'affichage mais pas avant.


---------------
MZP est de retour
Reply

Marsh Posté le 11-05-2006 à 18:48:43    

Salut,  
 
je pensais, beaucoup font ca (ce qui ne veut pas dire que c'est bien :o)
 
:hello:

Reply

Sujets relatifs:

Leave a Replay

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