2009-12-03 11 views
5

J'essaie de trouver un moyen de faire correspondre une requête à une expression régulière dans une base de données. Pour autant que je peux dire (bien que je ne suis pas un expert), alors que la plupart des SGBD comme MySQL ont une regex option pour la recherche, vous ne pouvez faire quelque chose comme:Correspond à une requête à une expression régulière dans SQL?

Trouver toutes les lignes de la colonne 1 qui correspondent à l'expression rationnelle dans mon question.

Ce que je veux être en mesure de le faire est le contraire, i.e. .:

Trouver toutes les lignes de la colonne 1 de telle sorte que la regex dans la colonne 1 correspond à ma requête.

exemple simple - que j'ai eu une base de données structurée comme ceci:

+----------+-----------+ 
| Column 1 | Column 2 | 
+----------+-----------+ 
| [a-z]+ | whatever | 
+----------+-----------+ 
| [\w]+ | whatever | 
+----------+-----------+ 
| [0-9]+ | whatever | 
+----------+-----------+ 

Donc, si j'ai demandé « chien », je veux qu'il revienne les lignes avec [az] + et [\ w] +, et si je demandais , il retournerait la ligne avec [0-9] +.

Si vous connaissez un moyen de le faire en SQL, un court exemple SELECT ou un lien avec un exemple serait très apprécié.

+1

Oracle ne prennent pas en charge regex jusqu'à 10g, SQL Server a ajouté le support dans v2005. Regex est la syntaxe standard ANSI que je connais, mais la ou les fonctions utilisées pour ce faire seront différentes entre les fournisseurs. –

Répondre

4

Pour MySQL (et peut-être d'autres bases de données aussi):

SELECT * FROM table WHERE "dog" RLIKE(`Column 1`) 
+0

Super! Merci pour votre réponse rapide. – Pete

+0

Juste une mise à jour rapide - J'ai trouvé que cela ne fonctionnait que dans MySQL si je structuré la requête comme suit: SELECT * FROM table WHERE "dog" RLIKE (Colonne 1) – Pete

+0

Comment le feriez-vous dans l'interface de requête Rails Active Record ? – Ephraim

Questions connexes