Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyciąganie pierwszej liczby z pola w którym znajdują się liczby i tekst
elektrrrus
post
Post #1





Grupa: Zarejestrowani
Postów: 175
Pomógł: 18
Dołączył: 11.06.2007
Skąd: Koszalin/Poznań

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


Witam. Musze z pola w bazie danych mysql mogącego zawierać i liczby i tekst wydobyć tylko pierwsza liczbę. Musi się to odbyć w zapytaniu sql, bo będzie użyte w ORDER BY.
Przykładowo wygląda tak:
Zawartość pola: "od 40 do 100", musze wydobyć: 40
Zawartość pola: "od 40", musze wydobyć: 40
Zawartość pola: "40-100", musze wydobyć: 40
Zawartość pola: "40", musze wydobyć: 40
Zawartośc pola: "40 do 100", musze wydobyć: 40

Próbowałem z funkcją SUBSTRING_INDEX, i rozbijanie po spacji, ale to nie daje satysfakcjonujących wyników.
CAST AS UNSIGNED również nie działa tak jak bym tego oczekiwał.

Ten post edytował elektrrrus 21.09.2008, 00:22:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
maciu
post
Post #2





Grupa: Zarejestrowani
Postów: 238
Pomógł: 1
Dołączył: 27.08.2003

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


najlepiej będzie wykorzystać do tego wyrażenia regularne
http://dev.mysql.com/doc/refman/5.0/en/regexp.html
Go to the top of the page
+Quote Post
elektrrrus
post
Post #3





Grupa: Zarejestrowani
Postów: 175
Pomógł: 18
Dołączył: 11.06.2007
Skąd: Koszalin/Poznań

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


Nie o to mi chodziło...
Z tego co rozumiem, REGEXP w mysql zwraca tylko wartości 0 jeśli dane pole nie spełnia wyrażenia, i 1 jeśli spełnia.
Mi nie chodzi o sprawdzanie czy dane pole spełnia wyrażenie, tylko wyciągnięcie z danego pola fragmentu, który pasowałby do patternu, tak jak to można zrobić w php-owej funkcji preg_match podająć jako trzeci argument nazwę tablicy do której te dopasowywania będzie przypisywać.

Wiem, mogę takie coś zrobić po stronie php, i wtedy odpowiednio posortować, ale wiążę się to z napisałem sporego kawałka kodu, dlatego pytam się, czy można coś takiego zrobić samym zapytaniem do mysql.
Go to the top of the page
+Quote Post
tommy4
post
Post #4





Grupa: Zarejestrowani
Postów: 288
Pomógł: 12
Dołączył: 2.12.2005

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


A czemu CAST(... AS UNSIGNED) nie działa tak jakbyś oczekiwał?
Go to the top of the page
+Quote Post
elektrrrus
post
Post #5





Grupa: Zarejestrowani
Postów: 175
Pomógł: 18
Dołączył: 11.06.2007
Skąd: Koszalin/Poznań

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


W polu, które zaczyna się od litery zwraca 0.
Na zawartość pola: "od 40 do 100", zwraca "0"
Go to the top of the page
+Quote Post
ShadowD
post
Post #6





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

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


Zawsze możesz pobrać pierwszy znak i określić czy jest liczbą jak rak to zapisujesz do zmiennej następnie sprawdzasz drugi jak jest to zapisujesz i trzeci jak nie jest to kończysz przeszukiwanie.

Przykład:
qw12eqwq

1. Sprawdza pierwszą - 0
2. Sprawdza drugą - 0
3. Sprawdza trzecią - 1 (1) zapisuje do zmiennej
4. Sprawdza czwartą - 1 (2) dopisujesz do zmiennej
5. Sprawdza piątą - 0
6. Koniec ponieważ po liczbie nastąpił znak który nie jest liczbą

Mój pomysł, może lekko dziwny ale to nic... (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
elektrrrus
post
Post #7





Grupa: Zarejestrowani
Postów: 175
Pomógł: 18
Dołączył: 11.06.2007
Skąd: Koszalin/Poznań

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


O kurcze (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Aż tak dobry to ja z sql nie jestem, ale popatrze jak się robi procedury w mysql, może coś mi z tego wyjdzie.
Tylko teraz inny problem, co będzie szybsze, czy procedura w mysql, czy pobranie wszytskiego i przemielenie tego po stronie php?
Go to the top of the page
+Quote Post
ShadowD
post
Post #8





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

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


Osobiście nie lubię sql i wszystko co mogę wykonuję po stronie php oczywiście bez przesady...

A z prędkością z tego co wiem to różnie bywa w zależności od tego co chcesz uzyskać i w jaki sposób napiszesz zapytanie...
Go to the top of the page
+Quote Post
elektrrrus
post
Post #9





Grupa: Zarejestrowani
Postów: 175
Pomógł: 18
Dołączył: 11.06.2007
Skąd: Koszalin/Poznań

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


Spróbuje napisac i w jeden i drugi sposób, zobaczymy co będzie szybsze...
Dzięki za pomoc i wskazówki.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 15:53