2009-12-03 17 views
5

Próbuję znaleźć sposób dopasowania kwerendy do wyrażenia regularnego w bazie danych. O ile mogę powiedzieć (choć nie jestem ekspertem), podczas gdy większość DBMS jak MySQL mają regex option do wyszukiwania, można tylko zrobić coś takiego:Dopasuj zapytanie do wyrażenia regularnego w SQL?

Znajdź wszystkie wiersze w kolumnie 1, które pasują do wyrażenia regularnego w moim pytanie.

Co chcę móc wykonać jest przeciwieństwem, tj .:

Znajdź wszystkie wiersze w kolumnie 1 takie, że regex w kolumnie 1 pasuje do mojego zapytania.

Prosty przykład - powiedzmy miałem bazie skonstruowany tak:

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

Więc gdybym zapytał "pies", to chcę zwrócić wiersze z [AZ] i + [\ w] +, a gdybym zapytał , zwróciłby wiersz z [0-9] +.

Jeśli znasz sposób, aby to zrobić w SQL, bardzo doceniamy krótki przykład SELECT lub link z przykładem.

+1

Oracle nie obsługuje regex-tych aż 10g, SQL Server dodano wsparcie w V2005. Nie ma żadnej standardowej składni ANSI, o której jestem świadomy - regex, ale funkcja (y) użyte do tego będą różne dla różnych dostawców. –

Odpowiedz

4

dla MySQL (i mogą być inne bazy danych zbyt):

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

Świetnie! Dziękuję za szybką odpowiedź. – Pete

+0

Po prostu szybka aktualizacja - Stwierdziłem, że działa ona tylko w MySQL, jeśli uporządkowałem zapytanie w następujący sposób: WYBIERZ * Z tabeli GDZIE "pies" RLIKE (kolumna 1) – Pete

+0

Jak zrobiłbyś to w interfejsie zapytań Rails Active Record ? – Ephraim

Powiązane problemy