MySQL 查詢有效小數位數大於兩位的值


昨天碰到一個問題,需要用SQL查詢C表中M字段有效小數位數大於兩位的值,這個問題一看挺簡單的,靜下心來想想,其實沒有頭緒,自己對SQL函數這一塊掌握的還是比較少的。
在網上搜索過程中,找到幾個相關的SQL,但是要不不管用,要不就報錯,好在了解了相關的解決思路和幾個方法,自己寫出來了。

1.擴大倍數法

SQL: 
select * from C 
where 
M*100 - floor(cast(M*100 as char)) > 0;

floor:取出整數部分,該函數使用時注意原字段精度問題,有時取出的整數因為精度問題而變小,這里將floor函數內的值轉化為字符串類型,然后再取整;
cast(字段名 as 轉換的類型 ):防止精度問題,將字段轉化為字符串類型;

把字段值擴大100倍,floor函數取出其整數,若該字段小數位數大於2兩位,相減的結果大於0,表示該字段小數位數大於2。

2.截取長度計算法

SQL:
select * from C
where
length(substr( 0 + CAST((M) AS CHAR),instr(M,'.')+1 ) ) > 2;

substr(str,pos): str,要截取的字符串;pos,從第幾個字符開始截取,包含該字符;
cast(字段名 as 轉換的類型 )://;
0 + CAST((i.discountAmout) AS CHAR):去掉某字段后面無效的0,0 + char 可以去掉無效0;
INSTR(STR,SUBSTR):在一個字符串(STR)中搜索指定的字符(SUBSTR),返回發現指定的字符的位置(INDEX),INDEX是從1開始計算,如果沒有找到就直接返回0,沒有返回負數的情況;

先去掉該字段無效的0,然后截取小數點后的部分,取其長度比較是否大於2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM