將字串轉換成數值
最近在改版自己的佈景主題,修改新樣式並順便將一些功能直接融入佈景主題內,移除一些用不到的外掛,希望能提高網站速度(跑題了~~)。言歸正傳,在這次的新主題中有一個抓取”熱門文章”的功能,是透過文章瀏覽量去做判斷的…這個功能最直接的想法就是用MYSQL中的Order By
去實作,(一段wp_post
與 wp_post_meta
之間的交織複雜的關係…)霹靂啪啦的很快的就寫出來了。之後在本機實測了一下…看到有輸出東西,便得意的覺得:”應該正確吧!!”,很快的就繼續下一個功能實作了~~但就在正式上線時,才突然發現…什麼!!為何沒有照瀏覽量排序(崩潰)
後來經過一陣內心小劇場後,突然靈光一閃的發現,原來wp_post_meta
的value資料格式是LongText
難怪Order By
會錯誤(傻)。當然找到到問題原因之後,便動手補起這個小小的BUG啦~~至於怎麼改,很容易的只要將原本的欄位從字串轉換成數值(Int或Real)再用Order By
便能正確的排序了。
SQL語法:
CAST(`欄位` AS DECIMAL(10,2))
原始的查詢語句:
1 2 3 4 5 6 7 8 9 |
select wpp.*,wppm.meta_value as 'post_count' from $wpdb->postmeta as wppm,$wpdb->posts as wpp where meta_key='post_count' and wppm.post_id=wpp.ID ORDER BY `post_count` DESC LIMIT 8 |
正確的查詢語句:
1 2 3 4 5 6 7 8 9 |
select wpp.*,wppm.meta_value as 'post_count' from $wpdb->postmeta as wppm,$wpdb->posts as wpp where meta_key='post_count' and wppm.post_id=wpp.ID ORDER BY CAST(`post_count` AS DECIMAL(10,2)) DESC LIMIT |
很抱歉,此文章關閉留言