Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Zapis w postaci 10E2
Forum PHP.pl > Forum > Przedszkole
slawek3422
Witam.
Czy jest jakiś sposób na zapisanie w bazie MySQL wartości w postaci 10E2. Jaki typ danych wybrać ? Nie chodzi mi o VARCHAR dlatego, że w przypadku gdy wybieram z dwóch wierszy (5E2, 3E7) wartość najmniejszą MIN () to w wyniku dostaję 3E7 co jest błędem. Z kolei jeżeli jako typ wybieram INT to przy zapisie 3E4 MySQL konwertuje wartość i wpisuje 30000 a ja potrzebuje zapis bez konwersji i dodatkowo żeby poprawnie działały funkcje MAX i MIN ...

Już się pogodziłem z faktem, że musi zostać INT i później w PHP będzie zabawa ze zmianą na zapis z E, ale postanowiłem jeszcze zapytać fachowców smile.gif

Sephirus
Ok nie jest to najwydajniejsze rozwiązanie ale w sumie czemu nie smile.gif

Robisz normalnie tabelkę z polami VARCHAR - nic prostszego - zapisujesz do nich sobie te wartości wprost jako na przykład '2.8E3' smile.gif

Następnie przy zapytaniach używaj funkcji CAST():
(założmy że pole "liczba" ma zapisaną wartość '2.8E3')
  1.  
  2. SELECT CAST(liczba AS decimal) AS liczba FROM (...) -- zwróci nam 2800 czyli to co trzeba
  3.  
  4. SELECT MAX(CAST(liczba AS decimal)) AS max_liczba FROM (...)
  5.  
  6. SELECT (...) FROM (...) ORDER BY CAST(liczba AS decimal) ASC
  7.  
  8. -- i tak dalej...
  9.  


Po problemie wink.gif

Swoją drogą to nietypowe rozwiązanie ale napewno zadziała wink.gif
Crozin
12604443 to liczba, 0xC0541B(16), 060052033(8), 1.2604443E7, 12604443 czy 1DNIH3(24) to format zapisu. Jedno i drugie nie ma ze sobą nic wspólnego.

Komputer zawsze powinien przechowywać i operować na "czystych" liczbach, dopiero w momencie wyświetlania danych użytkownikowi następuje zamiana liczby na tekst (12604443 -> "12604443") oraz ewentualne sformatowanie (12604443 -> "0xC0541B") tejże liczby. Każde inne podejście jest złe.*

* Nie potrafię sobie w tej chwili wymyślić sensownego przypadku gdzie użycie "formatu" byłoby uzasadnione.
erix
A nie lepiej zapisywać to do postaci dwóch kolumn? Jedna, to podstawa, druga - mnożnik.
slawek3422
Cytat(erix @ 1.02.2012, 16:12:49 ) *
A nie lepiej zapisywać to do postaci dwóch kolumn? Jedna, to podstawa, druga - mnożnik.


No tak też zrobię, będzie najprościej i bez zbędnego kombinowania jak koń pod górkę.

Dziękuję za odpowiedzi.
Temat do zamknięcia.
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.