• 15-06-2022, 08:13:11
    #1
    Merhaba arkadaşlar, günaydın.
    Veri tabanından hacim sorgulaması yapıyorum. Örnek olarak 10 ile 20 arasındaki verileri verileri getir dediğimde sonuçlarda sadece tam sayı olan değerler geliyor.

    Kod şunun gibi:
    $hacimsorgu= $db->prepare("SELECT * from URUNLER where HACIM BETWEEN 10 and 20");
    $hacimsorgu ->execute();
    ....
    aralıktaki 11, 12 ,15, 16 gibi ondalıksız değerler görüntüleniyor fakat bazı veriler nokta ile "12.3" bazı verilerde virgül ile "17,8" kayıt edilmiş. Bu veriler sorgu sonucunda görünmüyor, listelenmiyor. Bunları değiştirme gibi lüksüm yok ne yazık ki.
    Bunu nasıl çözüme kavuşturabilirim.
    Yardımlar için şimdiden teşekkürler.
  • 15-06-2022, 08:18:49
    #2
    integer sorgu çekip string ifadede arama yaporsunuz. veritabanındaki değerleri wharchardan float a çekin muhtemelen duzelir
    Dikkat : bu işlem sırasında bazı verileriniz silinebilir. sorumluluk kabul etmiyorum.
  • 15-06-2022, 08:21:09
    #3
    BETWEEN yerine LIMIT kullanarak sorguları getirebilirsiniz. Ör:
    SELECT * FROM URUNLER LIMIT 3, 6
    3. veriden sonrasından (dâhil değil) 6 adet veri getirecektir.
  • 15-06-2022, 08:28:24
    #4
    bagimsiz adlı üyeden alıntı: mesajı görüntüle
    integer sorgu çekip string ifadede arama yaporsunuz. veritabanındaki değerleri wharchardan float a çekin muhtemelen duzelir
    Dikkat : bu işlem sırasında bazı verileriniz silinebilir. sorumluluk kabul etmiyorum.
    Veri tabanına müdahale etmek istemiyorum, çünkü bir ERP programının veri tabanı ve herhangi bir sorunda başıma iş alırım. ERP programından alamadığımız bazı raporları bu şekilde kendim alıyorum. O yüzden boyumdan büyük risklere girmek istemiyorum.
  • 15-06-2022, 08:30:21
    #5
    efekoca adlı üyeden alıntı: mesajı görüntüle
    BETWEEN yerine LIMIT kullanarak sorguları getirebilirsiniz. Ör:
    SELECT * FROM URUNLER LIMIT 3, 6
    3. veriden sonrasından (dâhil değil) 6 adet veri getirecektir.
    Hocam bunun karşılaştığım problemle bir alakası yok gibi.
    Demek istediğinizi ben anlamadıysam kusura bakmayın.
  • 15-06-2022, 08:30:46
    #6
    o halde ayrı bir fonksiyon yazıp tüm veriyi sorgulayıp bu arada gelen datalarda iligili alanı varchardan float a çeviirmeli ve orada oluşan dizide sorugu çekmelisiniz. veritabanının buyukkluğuna göre işlem süresi değişir.
  • 15-06-2022, 08:49:39
    #7
    CAST(REPLACE(HACIM ,",",".") AS DEC(5,2) )

    =>5 virgülden önce, 2 virgülden sonraki basamak sayısı.
  • 15-06-2022, 09:34:48
    #8
    bagimsiz adlı üyeden alıntı: mesajı görüntüle
    o halde ayrı bir fonksiyon yazıp tüm veriyi sorgulayıp bu arada gelen datalarda iligili alanı varchardan float a çeviirmeli ve orada oluşan dizide sorugu çekmelisiniz. veritabanının buyukkluğuna göre işlem süresi değişir.
    Varsa bir örnek kullanım linki veya kodu, gönderebilir misiniz hocam.
  • 15-06-2022, 10:30:44
    #9
    lancelot adlı üyeden alıntı: mesajı görüntüle
    CAST(REPLACE(HACIM ,",",".") AS DEC(5,2) )

    =>5 virgülden önce, 2 virgülden sonraki basamak sayısı.
    Bu şekilde çözüldü