SQL veri türü VARCHAR ile Fiyata göre sıralama

3 Cevap php

Ben Fiyat göre sıralama ediyorum, bak:

  SELECT Price 
    FROM re2_listings 
ORDER BY Price asc

Sonuç:

1.200.000,00
1.500.000,00
200,00
3.000,00

... Ama doğru yolu:

200,00
3.000,00
1.200.000,00
1.500.000,00

Anladınız mı? Bunun nasıl?

3 Cevap

Açıkçası, VARCHAR sayısal miktarlarının depolanması için en iyi veri türü değildir. Eğer kullanmanız gerekiyorsa, sizin deyimi parçaları BY SELECT ve ORDER uygun bir sayısal tür fiyat sütunu CAST veya CAST içeren bir görünüm oluşturmak ve görünümünden SEÇ gerekir.

Için CAST için veri türü ve döküm için sözdizimi ürün bağlıdır.

Önce, bu soruyu cevaplamak için SQL varyantı bilmek yardımcı olur.

Eğer hala şema kontrol etme yeteneği varsa, sütun için bir sayısal veri türü (örneğin int veya şamandıra) kullanarak çok daha iyi ve görüntülenen bir bedeli olarak biçimlendirme.

MySQL veya SQL Server destekler:

  SELECT t.price
    FROM (SELECT r.price
                 CAST(r.price AS DECIMAL(15,2)) 'dprice'
            FROM RE2_LISTING r) t
ORDER BY t.dprice

Ben uygun veri türü varchar sütunu döküm, ve diğer adı dprice kullanılan yüzden sıralamak için referans olabilir. Eğer artan şekilde sıralama iseniz etmek istemiyorsanız, size ASC belirtmek gerek yoktur - bu varsayılan bulunuyor.