2010-08-27 5 views
0

J'ai une série d'étudiants dans une école secondaire. Les conseillers veulent diviser les étudiants par nom de famille. Voici la décomposition:Comment rechercher un sous-ensemble dans un champ de nom?

Conseiller 1: A à F Conseiller 2: G à Hr Conseiller 3: Hs O Conseiller 4: P - Z

Le premier est facile, je fais juste a:

where last_name like '[A-F]%' 

mais le second conseiller me donne la douleur, parce que si je fais:

where last_name like '[G-Hr]%' 

... Je reçois tous les étudiants l'esprit h noms de famille de G, H et R. Quelle est la meilleure façon d'obtenir ce que je veux pour les conseillers 2 et 3?

Répondre

2

Pour conseiller 2, essayez:

WHERE last_name LIKE 'G%' OR last_name LIKE 'H[a-r]%' 

Pour conseiller 3, essayez:

WHERE last_name LIKE 'H[s-z]%' OR last_name LIKE '[I-O]%' 
+0

Il semble si simple quand vous le mettez comme ça;) doit avoir plus de café! –

+0

Maintenant que vous le dites, le café semble être une bonne idée. Le code devrait fonctionner dans votre cas, mais supposons une minute que vous deviez séparer les élèves sur la lettre O, en vous cassant à Oa-Om et On-Oz. Le code ci-dessus échouerait pour des étudiants comme O'Brien, O'Reilly, etc., et vous voudriez probablement soit faire un REMPLACEMENT pour se débarrasser des caractères non-alpha, soit les ajouter à l'une des instructions LIKE. – LittleBobbyTables

+0

Bon point. Une autre chose à noter est que j'ai mis la condition entre parenthèses parce que j'ai d'autres clauses where, et sans les parenthèses, cela renvoyait beaucoup plus de lignes que je le voulais. –

Questions connexes