2011-07-16 28 views
-1

我怎樣才能在MySQL訂購等如何訂購這樣在MySQL

1 1/2 2 3/1 3/2 3/12 5/1 5 13/1 7

當我或DER它帶來11/2 13/1 befor 5

格式是X/X whre x爲數字

+0

因此,你有一個varchar?包含1或2個整數的列(如果是2個整數,則它們用'/'分隔),並且您希望使用此列對結果進行排序 - 按第一個整數進行數值排序,如果存在,則按第二個整數排序整數? –

+0

是的,這是偉大的 – Nueng

+0

ORDER BY CAST(houeNo作爲十進制)我嘗試這個,但它不工作正確 – Nueng

回答

2

我認爲你需要列分成兩個單獨的列。我絕不是一個MySQL專家,你可能不得不把它包含在一個子查詢中或者用其他方式來處理它,正如我們已經討論的那樣,你需要把這些從字符串轉換成整數(我似乎無法做到安裝上的MySQL這個工作我有,但我從來沒有使用它):

select 
    SUBSTRING_INDEX(a,'/',1) as PartA, 
    CASE WHEN LOCATE('/',a) > 0 THEN SUBSTRING_INDEX(a,'/',-1) ELSE '0' END as PartB 
from 
    <rest of query> 

哪裏a是本專欄的名稱。就像我說的,我似乎無法理解將這些值轉換爲整數的MySQL語法,顯然,我們需要應用ORDER BY子句。

很抱歉,這是一個不完整的答案,但希望它會指向你在正確的方向,並沒有其他人似乎是在回答...


基於我剛纔看到您的評論,我認爲我們可以通過數字得到它們:

select 
    CAST(SUBSTRING_INDEX(a,'/',1) as decimal) as PartA, 
    CAST(CASE WHEN LOCATE('/',a) > 0 THEN SUBSTRING_INDEX(a,'/',-1) ELSE '0' END as decimal) as PartB 
from 
    <rest of query>