2017-05-11 13 views
0

Ich habe eine SQL-Anweisung für in meiner nahen Suche und eine Spalte mit ORDER BY.MSSQL & PHP: Sortieren nach Spalte nur 2 Ziffern? Warum?

Doch diese Aufträge werden nur die ersten 2 Ziffern zum Beispiel:

Sortieren nach column1 DESC

Daten (sortiert):

  • 999 - 9920 -988 -977 -9.729 -960 -950 -900 -890 -8912

Hier ist meine SQL:

$sql_nearme = "SELECT * FROM (SELECT place.facebook_likes,place.place_logo, place.place_rank, place.percent_points, place.points, place.place_id, place.place_adress, place.place_description, place.place_photo, place.place_name,(6371 * acos(cos(radians(".$map['results'][0]['geometry']['location']['lat'].")) * cos(
       radians(place.place_lat) 
       ) * cos(
        radians(place.place_long) - radians(".$map['results'][0]['geometry']['location']['lng'].") 
       ) + sin(
        radians(".$map['results'][0]['geometry']['location']['lat'].") 
       ) * sin(
        radians(place.place_lat) 
       ) 
      ) 
     ) AS distance 
FROM place) A WHERE A.distance < 100 ORDER BY facebook_likes DESC OFFSET ".$blatt_start." ROWS FETCH NEXT ".$blatt_end." ROWS ONLY"; 
+2

die Säule ein 'varchar' zufällig ist? Das würde es anders sortieren. http://StackOverflow.com/Questions/4686849/Sorting-Varchar-field-Numerically-in-Mysql –

+1

Mögliche Duplikate von [SQL für die Bestellung von Nummer - 1,2,3,4 usw. statt 1,10,11, 12] (http://stackoverflow.com/questions/16519648/sql-for-ordering-by-number-1-2-3-4-etc-instead-of-1-10-11-12) – scsimon

+0

Danke ja die Spalte war ein Varchar jetzt Int. Vielen Dank – Burhan

Antwort

0

Sie können where-Klausel verwenden, wie unten:

FROM place) A WHERE A.distance < 100 ORDER BY 
    try_convert(int,Right(convert(varchar(10),facebook_likes),2)) DESC OFFSET ".$blatt_start." ROWS FETCH NEXT ".$blatt_end." ROWS ONLY";