2024年6月6日 星期四

【SQL】 如何刪除小數位數後面的0

 

select cast(12.1 as decimal(5,3))
//result 12.100

假設我們有一數字為 decimal 型態,須將 12.1 這個數值轉為字串,當轉為字串後結果會是 12.100,如果要將小數位數多出的 0 給去除,可以利用 replace、rtrim 函數達成我們要的結果

select rtrim(replace(cast(cast(12.1 as decimal(5,3)) as varchar),'0',' '))
//result 12.1
 

從下達的指令來看,我們會用 replace 函數把 ‘0’ 以 ‘[空格]‘ 替代,再用 rtrim 函數去除字串空白處;看似合乎邏輯,但假設今天數字為 12.01,若照上述指令執行,結果將變成 12.[空格]1,因此須再加上一層 replace 函數將原字串中間為 0 結替換回來

select replace(rtrim(replace(cast(cast(12.01 as decimal(5,3)) as varchar),'0',' ')),' ','0')
//result 12.01

若有資料型能 decimal 下有一整數為 12,其結果為 12.000,執行上述指令結果為 12.,若要去除後面的 ‘.’ 則再包覆一層同樣的指令結構

select replace(rtrim(replace(replace(rtrim(replace(cast(cast(12 as decimal(5,3)) as varchar),'0',' ')),' ','0'),'.',' ')),' ','.')
//result 12


沒有留言:

張貼留言