2010-01-15 21 views
20

Je suis sûr que c'est super facile, mais n'arrive pas à le comprendre .. Je dois sélectionner tous les titres de ma base de données où le titre commence avec A ou B, ou C, etc. Voici ce que j'ai essayé jusqu'à présent:php sélectionnez à partir de mysql où le titre commence par A (et A seul)

SELECT * FROM weblinks WHERE catid = 4 AND title LIKE 'A' 

mais ne renvoie rien .. quelqu'un pourrait-il me aider avec ça?

Vive

+0

J'ai aussi oublié de demander comment le faire si le le titre commence par un nombre .. – SoulieBaby

+0

Et comment faire cela avec PDO? –

Répondre

47

Pour les titres à partir de 'A' utiliser un % après la A

SELECT * FROM weblinks WHERE catid = 4 AND title LIKE 'A%' 

Pour les titres avec la lettre 'A', utilisez % de chaque côté de A

SELECT * FROM weblinks WHERE catid = 4 AND title LIKE '%A%' 

Pour titres se terminant par la lettre «A», utiliser % avant le A

SELECT * FROM weblinks WHERE catid = 4 AND title LIKE '%A' 

Fondamentalement % est un caractère générique. Il indique à MySQL que tout peut être dans l'emplacement.

Pour avoir des numéros comme la première lettre, consultez Mark's answer.

+0

Je pense que le deuxième exemple est censé se terminer par ''% A%'' – catsby

+0

Oui, ce serait correct. Fixé. –

+0

Merci beaucoup, j'ai aussi oublié de demander comment le faire si le titre commence par un numéro? – SoulieBaby

1

SELECT * FROM weblinks WHERE catid = 4 AND title LIKE 'A%'

% indique "quoi que ce soit", il est donc "A" alors quoi que ce soit. Fonctionne uniquement avec l'opérateur de comparaison LIKE.

2

essayer:

SELECT * FROM weblinks WHERE catid = 4 AND ((title like 'A%') OR (title like 'B%')) 

ainsi de suite et ainsi de suite

6

Les wildcards pour LIKE sont % et _, où% correspond à 0 ou plus de caractères et _ correspond exactement à un caractère.

6

Les réponses existantes sont correctes pour commencer avec A:

SELECT * FROM weblinks WHERE catid = 4 AND title LIKE 'A%' 

pour commencer avec un numéro, vous pouvez utiliser l'opérateur REGEXP:

SELECT * FROM weblinks WHERE catid = 4 AND title REGEXP '^[0-9]' 
+1

Venez voler la réponse acceptée loin de moi hein? (Just Kidding) Ajout d'un lien vers votre réponse. –

+0

merci les gars beaucoup apprécié :) – SoulieBaby

+2

@Soulie: vous devriez probablement accepter la réponse de Chacha puisque vous avez changé la question après qu'il avait déjà répondu correctement. La prochaine fois, si vous modifiez substantiellement une question, commencez une nouvelle question plutôt que d'en changer une existante. –