MySQL 查詢有效小數位數大於兩位的值
阿新 • • 發佈:2020-09-08
昨天碰到一個問題,需要用SQL查詢C表中M欄位有效小數位數大於兩位的值,這個問題一看挺簡單的,靜下心來想想,其實沒有頭緒,自己對SQL函式這一塊掌握的還是比較少的。
在網上搜索過程中,找到幾個相關的SQL,但是要不不管用,要不就報錯,好在瞭解了相關的解決思路和幾個方法,自己寫出來了。
1.擴大倍數法
SQL:
select * from C
where
M*100 - floor(M*100) > 0;
floor:取出整數部分。
把欄位值擴大100倍,floor函式取出其整數,若該欄位小數位數大於2兩位,相減的結果大於0。
//這條SQL應該沒問題,但是實際操作中行不通,可能是小數位後的0有影響
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