天天看點

mysql decimal轉字元串_「7」分享些MySQL中算術運算符的靈活應用案例【1】建表【2】資料準備【3】數字的加減乘除【4】字元串中的數字總結

算術運算符是SQL中最基本的運算符,MySQL自然不能缺少對其的支援。

mysql decimal轉字元串_「7」分享些MySQL中算術運算符的靈活應用案例【1】建表【2】資料準備【3】數字的加減乘除【4】字元串中的數字總結

既然其名稱中有“算術”二字,給人的第一感覺當然是支援數字型的運算。是以我們先從數字着手了解它。

【1】建表

我的習慣一直是以案例作為學習的切入點。建一個資料表是第一步:

CREATE TABLE `num_oper01` ( a` int(11) DEFAULT NULL, `b` float DEFAULT NULL, `c` decimal(18,2) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8
           
mysql decimal轉字元串_「7」分享些MySQL中算術運算符的靈活應用案例【1】建表【2】資料準備【3】數字的加減乘除【4】字元串中的數字總結

【2】資料準備

insert into num_oper01 values(3,3,3);insert into num_oper01 values(3,3.45,3.4);
           
mysql decimal轉字元串_「7」分享些MySQL中算術運算符的靈活應用案例【1】建表【2】資料準備【3】數字的加減乘除【4】字元串中的數字總結
結論:從select的結果可以看到,int永遠是以不帶小數位的整數存在,float則根據實際情況調整,而decimal則永遠按定義的小數位形式顯示。

【3】數字的加減乘除

select a,b,c,a+1.2,b+1.2,c+1.2 from num_oper01;select a,b,c,a-1.2,b-1.2,c-1.2 from num_oper01;select a,b,c,a*1.2,b*1.2,c*1.2 from num_oper01;select a,b,c,a/1.2,b/1.2,c/1.2 from num_oper01;
           
mysql decimal轉字元串_「7」分享些MySQL中算術運算符的靈活應用案例【1】建表【2】資料準備【3】數字的加減乘除【4】字元串中的數字總結

結論:

  • MySQL會自動進行資料類型切換;
  • 切換的順序是:INT --> FLOAT --> DECIMAL
  • MySQL會根據計算結果自動增加小數位數。

再來單獨看看取餘的計算效果:

mysql decimal轉字元串_「7」分享些MySQL中算術運算符的靈活應用案例【1】建表【2】資料準備【3】數字的加減乘除【4】字元串中的數字總結

從執行效果可以看出:

  • INT與DECIMAL的取餘還是INT與DECIMAL;
  • FLOAT取餘就超出我們的了解;
結論:取餘就是整數的一種概念,不要對小數有所謂取餘的想法。

最後我們當然不能忘記驗證被0除的結果。

mysql decimal轉字元串_「7」分享些MySQL中算術運算符的靈活應用案例【1】建表【2】資料準備【3】數字的加減乘除【4】字元串中的數字總結

還好MySQL沒給我們驚喜,涉及到算術運算,除數不能為0這個定理沒被打破,隻是傳回的是NULL而非報錯中斷程式執行。

【4】字元串中的數字

先給出自己測試出的結論吧:

在MySQL當中,字元串類型間進行加減乘除運算的時候,會截取字元串以數字開頭的那一部分數字進行運算,如果字元串前面沒有數字,那麼就隻能截取的數值為0,那麼進行加減的時候結果都是0,進行乘除的時候結果都是NULL。

看案例慢慢去了解。

select '1a'+'1b','15e'-'4'b,'15e'/'4b','2r'*'3s','r'/'s','2019-12-08'-'2019-12-08';
           
mysql decimal轉字元串_「7」分享些MySQL中算術運算符的靈活應用案例【1】建表【2】資料準備【3】數字的加減乘除【4】字元串中的數字總結

總結

  • 算術運算符有加減乘除及取餘5種;
  • 算術運算符不僅可以應用在數字,還可以應用于從字元串中抽取的數字。

是以,學習不能把自己的思維固化。