2010-07-12 11 views
1

Je dois faire une sélection sur la base des 2 premiers caractères d'un champ, ainsi, par exemplerequête MySQL - sélectionnez Corresp code postal

SELECT * from table WHERE postcode LIKE 'rh%'

Mais ce sélectionnerait tout document contenant ces 2 personnages à tout pointez dans le champ "code postal" à droite? J'ai besoin d'une requête qui sélectionne simplement les 2 premiers caractères. Des pointeurs?

Merci

Répondre

4

Votre requête est correcte. Il cherche les codes postaux commençant avec "rh".

En revanche, si vous voulez rechercher les codes postaux contenant la chaîne « rh » partout dans le domaine, vous pouvez écrire:

SELECT * from table WHERE postcode LIKE '%rh%' 

Modifier:

Pour répondre à votre commentaire, vous peut utiliser l'un ou l'autre ou les % et _ pour des recherches relativement simples. Comme vous l'avez déjà noté, % correspond à n'importe quel nombre de caractères alors que _ correspond à un seul caractère.

Ainsi, afin de faire correspondre les codes postaux commençant par "RHX" (où x est un caractère) votre requête serait:

SELECT * from table WHERE postcode LIKE 'RH_ %' 

(l'esprit l'espace après _). Pour les modèles de recherche plus complexes, vous devez lire des expressions régulières.

Pour en savoir plus:

http://dev.mysql.com/doc/refman/5.1/en/pattern-matching.html

http://dev.mysql.com/doc/refman/5.1/en/regexp.html

+0

Un grand merci pour votre réponse. Oui, il semble que la requête sélectionne tout champ de code postal commençant par 'RH'.Telle est la question que j'ai: Disons que je ne veux codes postaux qui commencent par RH1, par exemple: RH1 3JS RH2 7YH Mais ma requête serait également sélectionner: RH16 3NP RH17 3TH Est il y a un moyen d'arrêter la sélection après 3 (ou n'importe quel nombre) de caractères? Un grand merci – Dave

+0

Un grand merci Anax pour le code et les liens, j'ai eu la majorité de la requête de travail comment je voudrais maintenant, acclame. – Dave

1

LIKE '%rh%' renverra toutes les lignes avec 'rh' partout

LIKE 'rh%' renverra toutes les lignes avec 'rh' au début

LIKE '%rh' retournera toutes les lignes avec 'rh' à la fin.

Si vous souhaitez obtenir seulement les deux premiers personnages de la rh ', utilisez la fonction MySQL SUBSTR() http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_substr

+0

Ceci est très utile, MySQL SUBSTR() semble prometteur – Dave

0

Dave, votre chemin semble correct pour moi (et travaille sur mes données de test). L'utilisation d'un% en tête correspondra n'importe où dans la chaîne, ce qui n'est évidemment pas souhaitable pour les codes postaux.

+0

Merci! Oui, ça fonctionne correctement, mais j'ai d'autres commentaires (voir ci-dessus) – Dave

+0

Je ne l'ai pas testé mais vous pourriez avoir un certain succès avec '_'. voir http://dev.mysql.com/doc/refman/5.1/fr/pattern-matching.html – Leo

Questions connexes