Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] RegExp + Select
ewelinac18
post 23.10.2012, 17:08:49
Post #1





Grupa: Zarejestrowani
Postów: 99
Pomógł: 0
Dołączył: 11.07.2007

Ostrzeżenie: (0%)
-----


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

Ten post edytował ewelinac18 23.10.2012, 17:09:28
Go to the top of the page
+Quote Post
modern-web
post 23.10.2012, 17:13:46
Post #2





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

Ostrzeżenie: (0%)
-----


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..

Ten post edytował modern-web 23.10.2012, 17:19:48


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
ewelinac18
post 23.10.2012, 17:36:47
Post #3





Grupa: Zarejestrowani
Postów: 99
Pomógł: 0
Dołączył: 11.07.2007

Ostrzeżenie: (0%)
-----


Tak, ale po rozłożeniu ciągów chciałam jeszcze wykonać sortowanie i chyba będę musiała przebudować baze :/
Go to the top of the page
+Quote Post
modern-web
post 23.10.2012, 17:41:42
Post #4





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

Ostrzeżenie: (0%)
-----


Sortowanie spowalnia proces wyszukiwania, pamiętaj o tym.


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
jaslanin
post 23.10.2012, 18:45:14
Post #5





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

Ostrzeżenie: (0%)
-----


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.


--------------------
Good luck and happy PHP'ing
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 14:28