SQL - la Combinaison de plusieurs requêtes de type

Hey ma première question sur LE! Anywho...

Encore relativement un newb en SQL, donc je pense que j'ai peut-être raté quelque chose ici. Ma question est j'ai actuellement un tableau plein de numéros de téléphone. Je veux avoir une requête où je rechercher des numéros de téléphone qui sont semblables à une liste que j'ai. Ainsi, par exemple, je veux trouver les numéros de téléphone qui commencent par '555123', '555321", et "555987'. Je sais que normalement, si vous avez une liste de nombres, vous pourriez faire une requête telle que

SELECT * 
  FROM phonenumbers 
 WHERE number in ('5551234567', '5559876543', .... );

Est-il un moyen de le faire avec? Comme

SELECT * 
  FROM phonenumbers 
 WHERE number in like ('555123%', '555321%', '555987%'); //I know this doesn't actually work

Au lieu d'avoir à le faire individuellement

SELECT * 
  FROM phonenumbers 
 WHERE number like '555123%' 
    or number like '555321%' 
    or number like '555987%'; //Which does work but takes a long time

Ou est-il plus facile de faire ce que je suis absent? J'utilise postgres, je ne sais pas si il y a toutes les commandes qui pourraient l'aider avec ça. Merci!

Bienvenue DONC! J'ai utilisé votre question afin de clarifier qu'il se rapporte à postgres
Quelle est la version de Postgres? Sonne comme un travail pour regexes: postgresql.org/docs/8.3/static/functions-matching.html
Which does work but takes a long time - à moins de changer la nature de la requête, une autre représentation syntaxique de la même chose va prendre du temps. Est la colonne indexée?
Combien de temps reçoit votre requête?
En fait, la colonne est indexée. Je n'avais pas remarqué ça avant. Oh, et je suis en utilisant postgresql 8.0. J'ai une grande quantité de chiffres, je suis à la recherche.

OriginalL'auteur The Jug | 2010-02-11