Php SQL : afficher que les entré qui commencent par C ??

marion17

WRInaute occasionnel
salut a tous

je me demander si il était possible avec une requette sql de n'afficher que les données d'une table commençant par la lettre C ???

merci
 

fablezouave

WRInaute discret
salut

LIKE est une commande assez gourmande en ressources. Dans l'optique d'optimiser ta requète, tu peux faire aussi comme ça :

Code:
SELECT .... FROM tatable WHERE LEFT(attribut , 1) = 'C'

fab
 

marion17

WRInaute occasionnel
merci mais je ne trouve pas la bonne syntax

j'ai esayer comme ça :

$res = mysql_query("SELECT salut FROM bonjour WHERE LEFT(attribut , 1) = 'C' LIMIT 0, 10");

while($r = mysql_fetch_array($res)){


etc..
}

mais ça me met "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in I:\xampplite\monsite\index.php on line 146"

quand j'enleve le where tous marche bien par contre.

vous voyez d'ou ça peu venir ?
 

NxtGen

WRInaute impliqué
"attribut" correspond au nom de la colonne ou tu veux rechercher les champs qui commencent par C

C'était donné en exemple, il faut changer "attribut" par le nom de ta colonne ;)
 

marion17

WRInaute occasionnel
NxtGen a dit:
"attribut" correspond au nom de la colonne ou tu veux rechercher les champs qui commencent par C

C'était donné en exemple, il faut changer "attribut" par le nom de ta colonne ;)

ha genial !!

en effet j'ai mi le nom du champ de la table et ça marche impecable :)

je suis sur un mutalisé donc j'espere que ta jolie requette fablezouave est bien optimisée :)

c'en ai presque magique, et un gros merci car j'aurais jamais trouvée toute seul :)

a charge de revanche ,c'est ça l'esprit wri ^^
 

ACth

WRInaute impliqué
fablezouave a dit:
salut

LIKE est une commande assez gourmande en ressources. Dans l'optique d'optimiser ta requète, tu peux faire aussi comme ça :

Code:
SELECT .... FROM tatable WHERE LEFT(attribut , 1) = 'C'

fab
Je suis bien intéressé.

As-tu des liens indiquant que cette méthode est moins gourmande que le LIKE ?
 

fablezouave

WRInaute discret
LIKE utilise une expression régulière, alors que LEFT utilise une simple fonction de bas niveau sur la chaîne de caractère.
Des liens ? non, par contre tu peux faire un simple test en insérant un nombre conséquant d'enregistrements dans une table ...
On peut cependant rendre ce "like" assez rapide en placant un index sur la colonne. C'est la seule forme de LIKE (LIKE 'chaine%' ou LIKE 'chaine') où l'index sera utilisé, car 'chaine' est au début, donc l'expression est constante.

Enfin, bref, dans la majorité des cas, c'est à éviter :)

fab
 

Discussions similaires

Haut