> Tous les forums > Forum des Webmasters
 CONTAINS - Mysql (RESOLU)
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
t671
  Posté le 14/12/2004 @ 17:17 
Aller en bas de la page 
Astucien
Bonjour, Je suis à la recherche d'exemple sql comprenant l'expression CONTAINS. Et je ne trouve pô !!!!! En fait, je veux rechercher ds ma table, un prénom ds la colonne 'prenom'. Exemple : je veux afficher ts les enregistrements ayant pour prénom 'Marie'. Si il n'y a qu'un prénom (Marie), c ok ! Mais si il y a 2 ou 3 prénoms (Marie Angelle Bernadette), ça ne fonctionne pas. Pour ça, je pense qu'il faudrait que j'utilise la fonction CONTAINS, mais je ne trouve pas d'exemple. Alors si vs pouvez m'aider ........... Merci [bigsmile]

Modifié par t671 le 14/12/2004 19:21
Publicité
ti_ouf
 Posté le 14/12/2004 à 18:13 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

bonjour pour suivre et lorsque tu fais cette requette sql avec le prenom marie et que tu e a plusieurs differents,tu dis que ça marche pas??? c'est a dire??? message erreur???te donne uniquement le prenom marie ...?
t671
 Posté le 14/12/2004 à 18:21 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
ti_ouf a écrit :
bonjour pour suivre et lorsque tu fais cette requette sql avec le prenom marie et que tu e a plusieurs differents,tu dis que ça marche pas??? c'est a dire??? message erreur???te donne uniquement le prenom marie ...?
Je n'ai pas d'erreur, mais je n'affiche que les personnes ayant Marie pour seul prénom. Si la personne a trois prénomp (Marie Angele Bernadette), cet enregistrement n'est pas affiché ! Et je cherche donc la requête SQL (ou autre chose) qui m'afficherait l'individu si son prénom contient Marie ..........
nono21
 Posté le 14/12/2004 à 18:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Et je cherche donc la requête SQL (ou autre chose) qui m'afficherait l'individu si son prénom contient Marie ..........
Bonjour, essaye peut-être avec un select LIKE marie (mais je ne suis pas bien sûr) Sinon, peut-être une recherche en texte, ie : SELECT * FROM 'nom_de_ta_table' WHERE MATCH (prenom) AGAINST ('marie' IN BOOLEAN MODE) normalement ça doit marcher, même s'il y a surement plus simple
t671
 Posté le 14/12/2004 à 18:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
nono21 a écrit :
Et je cherche donc la requête SQL (ou autre chose) qui m'afficherait l'individu si son prénom contient Marie ..........
Bonjour, essaye peut-être avec un select LIKE marie (mais je ne suis pas bien sûr) Sinon, peut-être une recherche en texte, ie : SELECT * FROM 'nom_de_ta_table' WHERE MATCH (prenom) AGAINST ('marie' IN BOOLEAN MODE) normalement ça doit marcher, même s'il y a surement plus simple
OK !!! Je crois pas qu'avec "LIKE" ça marche pas, mais peut-être ta deuxième solution !!!! J'essaierais demain et te tiendrais au courant ........... Si il y a d'autres suggestions, j'essaierais demain ......... A ++[clindoeil]

Modifié par t671 le 14/12/2004 18:36
t671
 Posté le 14/12/2004 à 19:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
J'ai finalement réussi à tester avt demain [langue], et la requête avec MATCH fonctionne. La requête exact est : SELECT champ FROM `bd` WHERE MATCH (champ) AGAINST ('marie' IN BOOLEAN MODE) [cool]
koala01
 Posté le 15/12/2004 à 02:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Salut, Il y a parfaitement moyen, pour peu que l'on utilise les bons caractères génériques, d'obtenir le résultat voulu avec la simple utilisation de like... En effet, dans le like, le caractère % représente n'importe quel caractère ou chaine de caractère (c'est l'équivalent du * sous dos) Tu as donc quatre possiblités distinctes: 1- "SELECT * FROM table WHERE champs like 'marie'" qui effectuera la sélection des enregistrements dont le chmaps est marie (et qui revient au meme que "SELECT * FROM table WHERE champs='marie'", mais qui demande plus de ressources) 2- "SELECT * FROM table WHERE champs like 'marie%'" qui effectuera la sélection des enregistrements dont le chmaps commence par marie, et contient éventuellement d'autres caractère après (les enregistrement dont le champs est marie, mais aussi marie ange ou marie madeleine sortiront) 3- "SELECT * FROM table WHERE champs like '%marie'" qui effectuera la sélection des enregistrements dont le chmaps termine par marie, et contient éventuellement d'autres caractère avant(les enregistrement dont le champs est marie, mais aussi jean marie sortiront) 4- "SELECT * FROM table WHERE champs like '%marie%'" qui effectuera la sélection des enregistrements dont le chmaps contient marie, et contient éventuellement d'autres caractère avant et/ou après (les enregistrement dont le champs est marie, mais aussi marie ange ou jean marie sortiront) Si, enfin, tu crains un problème de "casse" (ta table contient aussi bien des enregistrement dont le champs contient "Marie", "MARIE" et "marie"), tu peux utiliser la fonction upper(argument) ou la fonction lower(argument) dans les critères de recherches. La fonction upper(argument) transforme argument en majuscules, alors que la fonction lower transforme l'argument en minuscules. Si cette fonction est utilisée dans le critère de sélection (après where), cela ne modifiera en rien la sortie du select... Evidemment, il s'agira toujours de veiller à ce que le champs sur lequel s'applique le critère de sélection soit à la meme casse que celle du critère en lui meme...: "SELECT * from table where lower(champs) like upper('%marie%')" ne sortira pas de résultat, pas plus que "SELECT * from table where upper(champs) like lower('%marie%')"... par contre "SELECT * from table where upper(champs) like upper('%marie%')" te permettra de prendre tous les enregistrements dont le champs contient marie, et ce quelle que soit la manière dont il a été écrit (marie, Marie ou MARIE), et te le ressortira tel qu'il a été écrit, et non, selon le dernier exemple, tout en majuscule
t671
 Posté le 15/12/2004 à 09:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
koala01 a écrit :
Salut, Il y a parfaitement moyen, pour peu que l'on utilise les bons caractères génériques, d'obtenir le résultat voulu avec la simple utilisation de like... En effet, dans le like, le caractère % représente n'importe quel caractère ou chaine de caractère (c'est l'équivalent du * sous dos) Tu as donc quatre possiblités distinctes: 1- "SELECT * FROM table WHERE champs like 'marie'" qui effectuera la sélection des enregistrements dont le chmaps est marie (et qui revient au meme que "SELECT * FROM table WHERE champs='marie'", mais qui demande plus de ressources) 2- "SELECT * FROM table WHERE champs like 'marie%'" qui effectuera la sélection des enregistrements dont le chmaps commence par marie, et contient éventuellement d'autres caractère après (les enregistrement dont le champs est marie, mais aussi marie ange ou marie madeleine sortiront) 3- "SELECT * FROM table WHERE champs like '%marie'" qui effectuera la sélection des enregistrements dont le chmaps termine par marie, et contient éventuellement d'autres caractère avant(les enregistrement dont le champs est marie, mais aussi jean marie sortiront) 4- "SELECT * FROM table WHERE champs like '%marie%'" qui effectuera la sélection des enregistrements dont le chmaps contient marie, et contient éventuellement d'autres caractère avant et/ou après (les enregistrement dont le champs est marie, mais aussi marie ange ou jean marie sortiront) Si, enfin, tu crains un problème de "casse" (ta table contient aussi bien des enregistrement dont le champs contient "Marie", "MARIE" et "marie"), tu peux utiliser la fonction upper(argument) ou la fonction lower(argument) dans les critères de recherches. La fonction upper(argument) transforme argument en majuscules, alors que la fonction lower transforme l'argument en minuscules. Si cette fonction est utilisée dans le critère de sélection (après where), cela ne modifiera en rien la sortie du select... Evidemment, il s'agira toujours de veiller à ce que le champs sur lequel s'applique le critère de sélection soit à la meme casse que celle du critère en lui meme...: "SELECT * from table where lower(champs) like upper('%marie%')" ne sortira pas de résultat, pas plus que "SELECT * from table where upper(champs) like lower('%marie%')"... par contre "SELECT * from table where upper(champs) like upper('%marie%')" te permettra de prendre tous les enregistrements dont le champs contient marie, et ce quelle que soit la manière dont il a été écrit (marie, Marie ou MARIE), et te le ressortira tel qu'il a été écrit, et non, selon le dernier exemple, tout en majuscule
Merci koala pour toutes ces infos .......[cool] En effet, ta solution est plus simple et moins lourde !!!
ti_ouf
 Posté le 15/12/2004 à 20:59 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

noté pour infos [langue]
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
19,99 €Casque sans-fil bluetooth Philips TAH5205BK à 19,99 €
Valable jusqu'au 27 Octobre

Cdiscount fait une promotion sur le casque sans-fil bluetooth Philips TAH5205BK qui passe à 19,99 € au lieu d'une quarantaine d'euros habituellement. Ce casque offre des basses puissantes et percutantes et une bonne isolation phonique. Des commandes sur la coque vous permettent de contrôler vos appels, la musique et le volume. Le casque offre une autonomie de 29 heures et peut être plié pour prendre moins de place dans le sac. Recharge via USB-C.


> Voir l'offre
261,01 €Kit de 64 Go (4x16Go) de mémoire DDR4 Crucial Ballistix 3600 MHz RGB à 261,01 € livré
Valable jusqu'au 26 Octobre

Amazon Allemagne fait une promotion sur le kit de 64 Go (4x16 Go) de mémoire DDR4 Crucial Ballistix 3600 MT/s CL18 à 256,10 € (avec la TVA ajustée). Comptez 4,91 € pour la livraison en France soit un total de 261,01 € livré alors qu'on le trouve ailleurs à plus de 359 €. Vous pourrez personnaliser la palette de couleurs de votre ordinateur avec 16 LED RGB dans 8 zones sur chaque module.

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et il n'y a pas de douanes. Si vous êtes perdu en allemand, vous pouvez traduire le site en anglais.


> Voir l'offre
85,30 €Kit de 16 Go (2x8 Go) de mémoire DDR4 Corsair Vengeance RGB Pro 3600 MHz à 85,30 € livré
Valable jusqu'au 27 Octobre

Amazon Allemagne fait une promotion sur le kit de 16 Go (2x8 Go) de mémoire DDR4 Corsair Vengeance RGB Pro 3600 MT/s CL18 à 80,57 € (avec la TVA ajustée). Comptez 4,73 € pour la livraison en France soit un total de 85,30 € livré alors qu'on le trouve ailleurs autour de 110 €. Vous pourrez personnaliser la palette de couleurs directement depuis le logiciel Corsair iCU.

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et il n'y a pas de douane.


> Voir l'offre

Sujets relatifs
Wrong parameter count for mysql ==> resolu
Accès distant à Mysql [RESOLU]
[RESOLU]Souci création de table sur MYSQL avec err
MySQL sur CEGETEL - Résolu
Une limite dans Mysql ?[RESOLU]
delete base mysql, les droits ??? (RESOLU)
MySQL - somme des valeurs d'un champs [->Résolu
Question technique PHP et MySQL [Résolu]
Comment créer un chat? C'est quoi MySql ?(Résolu)
Échec connection base mysql
Plus de sujets relatifs à CONTAINS - Mysql (RESOLU)
 > Tous les forums > Forum Forum des Webmasters