Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] RegExp + Select
Forum PHP.pl > Forum > Przedszkole
ewelinac18
Dane i struktura bazy:

Kod
+----+-------------------+
| ID |         code      |
+----+-------------------+
| 1  | a:456;b:417;c:457 |
| 2  | a:12;b:217;c:745  |
| 3  | a:467;b:417;c:856 |
| 4  | a:856;b:5888;c:857|
....


i teraz problem tkwi w tym jakie zapytanie wysłać do bazy aby otrzymać z kolumny code cyfry po literze b:
czyli b:xxxxx

np.
Kod
+----+------+
| ID | code |
+----+------+
| 1  | 417  |
| 2  | 217  |
| 3  | 417  |
| 4  | 5888 |
....


czy jest to możliwe ?
szukałem w necie i nie moge znaleść odpowiedzi.

Próbowałam RegExp
  1. SELECT `id` , (`code`REGEXP 'b:[0-9]+') AS `code` FROM xhurt LIMIT 0 , 5

ale wyświetlają mi sie 1 lub 0

Będę wdzieczna za pomoc smile.gif
modern-web
Moja sugestia, silnik bazy danych nie służy do takich celów jak rozkładanie ciągów.
Pobierz całą wartość, skorzystaj z PHP (bo jest taka możliwość, prawda?) -> wyrażenia regularne / funkcja explode, wynik dostaniesz na tacy.

Pozdrawiam.

@edit ew. rzuć okiem na MATCH i AGAINST, i nawiasem, REGEXP chyba się tak nie stosuje..
ewelinac18
Tak, ale po rozłożeniu ciągów chciałam jeszcze wykonać sortowanie i chyba będę musiała przebudować baze :/
modern-web
Sortowanie spowalnia proces wyszukiwania, pamiętaj o tym.
jaslanin
w mysql funkcja REGEXP zwraca jedynie wartość logiczną czy string pasuje do wzorca, bez zwracania treści dopasowania

Możesz też bawić się z takimi funkcjami, ale znacząco obciąży to bazę danych:
http://stackoverflow.com/questions/2696884...ne-field-to-two
http://stackoverflow.com/questions/5928599...trings-in-mysql

Najlepiej by było, jeżeli potrzebujesz wykonywania operacji na danych w tym polu tekstowym. Powinieneś podzielić string który masz na kolumny i dopiero wtedy wykonywać na niej operacje. Tak by tabela była zgodna z http://pl.wikipedia.org/wiki/Normalizacja_bazy_danych#1NF, inaczej będzie to kłopotliwe, bo bazy danych są po prostu tak zaprojektowane.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.