MySQL之解決字符串?dāng)?shù)字的排序失效問題
MySQL字符串?dāng)?shù)字的排序失效問題
問題描述
最近在做老項目維護(hù)時,有客戶反映說,視圖的序號排序有問題。
這里的序號,相當(dāng)于是排序號,由用戶自定義輸入排序號,來自定義某些數(shù)據(jù)的前后位置。
但是檢查了一下SQL,又是沒有問題的。
"select * from contractFil where istmp=0 order by sort desc";
后來,查看表設(shè)計,發(fā)現(xiàn)列sort是varchar類型的。
所以不能直接排序。
解決
在不修改原有設(shè)計的情況下,只能改SQL了,我們需要先把字符串轉(zhuǎn)數(shù)字。
字符串轉(zhuǎn)數(shù)字的三種方式:
(1)+0
order by (sort+0) desc
(2)用函數(shù)CAST(value as type)或CONVERT(value, type)
type可為DECIMAL (浮點(diǎn)數(shù) )、SIGNED(整數(shù))、UNSIGNED (無符號整數(shù) )
order by CAST(sort as SIGNED) desc order by CONVERT(sort ,SIGNED)desc
MySQL中ORDER BY排序錯誤
記錄一個錯誤
這是使用format函數(shù)來進(jìn)行小數(shù)點(diǎn)后兩位保留,使用這個會導(dǎo)致排序錯誤。
SELECT enterprise_key_id, enterprise_name_cn, occupied_area, registered_place_key_id, registered_place_name, registered_capital, registered_capital_type_key_id, registered_capital_type_name, -- ROUND(sum( IFNULL( tax_aa, 0 ) ) / 10000,2) AS last_year_taxtotal FORMAT( IFNULL( sum( IFNULL( tax_aa, 0 ) ) / 10000, 0 ), 2 ) AS last_year_taxtotal FROM etl_enterprise_base_info WHERE archived_year_month LIKE CONCAT( '%', YEAR ( DATE_SUB( NOW( ), INTERVAL 1 YEAR ) ), '%' ) AND registered_place_key_id = 8 GROUP BY enterprise_key_id ORDER BY last_year_taxtotal DESC
使用ROUND函數(shù)來進(jìn)行排序就沒有出錯。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql的聯(lián)合索引(復(fù)合索引)的實(shí)現(xiàn)
這篇文章主要介紹了mysql的聯(lián)合索引(復(fù)合索引)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Mysql 本地計算機(jī)無法啟動 mysql 服務(wù) 錯誤 1067:進(jìn)程意外終止。
初學(xué)php接觸mysql,遇到一些問題,卸載重裝后,無法啟動mysql服務(wù),網(wǎng)絡(luò)上有很多種說法,我這里將我解決這個問題的辦法提出2009-12-12mysql中find_in_set()函數(shù)用法及自定義增強(qiáng)函數(shù)
MySQL 中的 FIND_IN_SET 函數(shù)用于在逗號分隔的字符串列表中查找指定字符串的位置,本文就來介紹一下mysql中find_in_set()函數(shù)用法及自定義增強(qiáng)函數(shù)2024-08-08MySQL8.0.21安裝步驟及出現(xiàn)問題解決方案
這篇文章主要介紹了MySQL8.0.21安裝步驟及出現(xiàn)問題解決方案,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12MySQL中distinct語句去查詢重復(fù)記錄及相關(guān)的性能討論
這篇文章主要介紹了MySQL中distinct語句去查詢重復(fù)記錄及相關(guān)的性能討論,文中的觀點(diǎn)是在一定情況下避免在最高層查詢中使用distinct,需要的朋友可以參考下2016-01-01