2013-12-11 72 views
0

我寫了這個代碼來顯示從WordPress數據庫表中DATAS HTML表格:排序VARCHAR整數首先在MySQL

global $wpdb; 
$table_name = $wpdb->prefix . 'mytable'; 
$stats = $wpdb->get_results("SELECT * FROM $table_name ORDER BY cast(alexacr as UNSIGNED) ASC"); 
$itemnum = $wpdb->get_var("SELECT COUNT(id) FROM $table_name"); 
echo '<span style="font-family: sans-serif;position:relative;float: left;font-size: 18px;"><em>'.$itemnum.' Sites</em></span>'; 
echo '<table>'; 
echo '<thead>'; 
echo '<th>Nome &amp; Link</th><th>Alexa CR</th>'; 
echo '</thead>'; 
echo '<tbody>'; 
foreach ($stats as $stat){ 
echo'<tr>'; 
echo '<td><a title="'.str_replace('_','',$stat->name).'" href="'.$stat->url.'" target="_blank">'.str_replace('_','',$stat->name).'</a></td><td>'.$stat->alexacr.'</td>'; 
echo'</tr>'; 
} 
echo '</tbody>'; 
echo '</table>'; 

alexacr列設置爲varchar。 爲alexacr列的結果是這樣的:

N/A 
1 
2 
3 
4 

我怎麼能只分選出的數字是這樣的嗎?

1 
2 
3 
4 
N/A 

謝謝。

+1

存儲號碼爲號碼,使用'NULL'爲N/A可能? –

+0

你能解釋一下嗎,謝謝。 –

回答

1

嘗試http://sqlfiddle.com/#!2/210007/1

更多細節LPAD

SELECT 
     * 
    FROM 
     Table1 
    Order By 
     CASE WHEN alexacr like 'N/A' then 1 else 0 end ASC, 
     LPAD(alexacr, 20, '0') ASC 

演示在http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_lpad

+0

如果我用不同長度的數字替換1,2,3,4不起作用。謝謝。 –

+0

請嘗試更新ans –

+0

我認爲它的工作原理只有當我有最大3長度的數字,但如果我使用例如4580不工作。但現在我知道一個新的功能,謝謝。 –

1

試試這個:

ORDER BY alexacr ,alexacr *1 

編輯

我猜N/A是NULL所以

ORDER BY CASE WHEN alexacr IS NULL THEN 1 ELSE 0 END,alexacr 

SQL Fiddle

SQL Fiddle

+0

不適用結果隨機數排序:1 4 3 2 N/A。 –

+0

@M先生我嚴重懷疑 – Mihai

+0

N/A不爲空。當我嘗試使用偉大的數字第一代碼(1212,12632,2185,319)不起作用。謝謝。 –