我有一個帖子的表格,標題是按照「人類」字母順序排列,但不是以計算機字母順序排列。這是兩種口味,數字和字母:ORDERBY使用SQL字符串操作的「人類」字母順序
數字:圖1.9,圖1.10,圖1.11 ...
字母:圖1A ...圖1Z .. 。圖1AA
如果我orderby
標題,其結果是,來1.1和1.2之間1.10-1.19,和1AA-1AZ來1A和1B之間。但這不是我想要的;我想要「人類」字母順序,其中1.10之後1.9和1AA來到1Z之後。
我想知道是否仍然有辦法在SQL中獲取我想要使用字符串操作(或其他我沒有想到的)的順序。
我不是SQL方面的專家,所以我不知道這是可能的,但如果有一種方法可以做到有條件更換的話,好像我可以做這個強加給我想要的順序:
刪除週期(可以用
replace
做,對不對?)如果剩餘的人物數量超過三個字符,第一個字符後添加
0
(零)。
這似乎給我我想要的結果:1.9
將成爲109
,110
之前這來; 1Z
將變爲10Z
,其在1AA
之前。但是它可以在SQL中完成嗎?如果是這樣,語法是什麼?
請注意,我不想修改數據本身 - 只是以所述順序輸出查詢結果。
這是在Wordpress安裝的上下文中,但我認爲這個問題更適合一個SQL問題,因爲各種事情(例如分頁)依賴於在MySQL查詢階段發生的排序,而不是在PHP中。
可悲的是,我想你最好的選擇將設置一個查找表,以便'1 => 1.1'和'10 = 1.10'。 – Kermit
您實際使用的值是什麼:「1.1」,「圖1.1」或「圖1.1這是圖的標題」? –
我的那個主意不好,不是嗎?是否會混合使用數字和alpha來排序?如果是這樣,我們可以假設1Z跟着2.0? –