Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL]działania na varchar
Forum PHP.pl > Forum > Przedszkole
maksik
Co mogę zrobić gdy chcę pobrać rekordy z tabeli VARCHAR która zawiera liczby, a ja chce określić zakres rekordów WHERE liczba >'20' and liczba <'50' oczywiscie nie zwraca mi poprawnych wyników gdyż to VARCHAR a większość rekordów jest w formacie typu "20,20" , "43,12", (po przecinku) w jaki sposób ustalić ten zakres gdyż nie mogę zmienić tabeli na INT ponieważ jest pobierana wp_postsmeta przez co są tam dane zawierające inne znaki niż cyfrowe?
nospor
Skoro format przechowywanych danych to "20,20" , "43,12" to jak niby ma dzialac warunek >20?
Pyton_000
  1. SELECT * FROM tabela WHERE cast(liczba AS DECIMAL(4,2)) BETWEEN 20 AND 50;

Może coś w ten deseń. Nie wiem czy zadziała, pisane z palca i na czuja smile.gif
maksik
to jest pobierane z tabeli wordpresa i dlatego nie wiem czy przy pobieraniu rekordu jest możliwa jakaś kompresja do decimal? zmiany w samej tabeli danych nie można dokonać.
Pyton_000
A jaki problem zmienić zapytanie? I o jakiej kompresji mówisz
maksik
twoje zapytanie działa, dzięki

jeszcze tylko mam pytanie, gdzie rekord składa się z 3 cyfr przed przecinkiem np. jest to 105,20 zwraca zapytanie pusty wynik jeżeli ustawiam zakres na np. liczba >'70' and liczba < '110'
Pyton_000
Zamień poprzedni Cast na ten
  1. CAST(REPLACE(liczba, ',', '.') AS DECIMAL(10,2))
maksik
nic nie dało dokładnie to wygląda tak

  1. SELECT * FROM tabela WHERE cast(REPLACE(liczba, ',', '.') AS DECIMAL(10,2)) and liczba > '80' and liczba < '110'


natomiast ten działa

  1. SELECT * FROM tabela WHERE cast(REPLACE(liczba, ',', '.') AS DECIMAL(10,2)) and liczba > '50' and liczba < '80'
Pyton_000
A widziałeś żeby u mnie liczby były w ' ?
To na pewno działa
  1. SELECT * FROM test WHERE cast(REPLACE(liczba, ',', '.') AS DECIMAL(10,2)) BETWEEN 80 AND 110;
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.