天天看點

MySql的一些内置函數Num01–>字元串函數Num02–>數學函數Num03–>日期函數Num04–>類型轉換函數Num05–>流程控制函數

Num01–>字元串函數

1,檢視字元的ascii碼值ascii(str),str是空串時傳回0
select ascii('a');

2,檢視ascii碼值對應的字元char(數字)
select char();

3,拼接字元串concat(str1,str2...)
select concat(,,'ab');

4,包含字元個數length(str)
select length('abc');

5,截取字元串
left(str,len)傳回字元串str的左端len個字元
right(str,len)傳回字元串str的右端len個字元
substring(str,pos,len)傳回字元串str的位置pos起len個字元
select substring('abc123',,);

6,去除空格
ltrim(str)傳回删除了左空格的字元串str
rtrim(str)傳回删除了右空格的字元串str
trim([方向 remstr from str)傳回從某側删除remstr後的字元串str,方向詞包括both、leading、trailing,表示兩側、左、右
select trim('  bar   ');
select trim(leading 'x' FROM 'xxxbarxxx');
select trim(both 'x' FROM 'xxxbarxxx');
select trim(trailing 'x' FROM 'xxxbarxxx');

7,傳回由n個空格字元組成的一個字元串space(n)
select space();

8,替換字元串replace(str,from_str,to_str)
select replace('abc123','123','def');

9,大小寫轉換,函數如下
lower(str)
upper(str)
select lower('aBcD');
           

Num02–>數學函數

1,求絕對值abs(n)
select abs(-);

2,求m除以n的餘數mod(m,n),同運算符%
select mod(,);
select %;

3,地闆floor(n),表示不大于n的最大整數
select floor();

4,天花闆ceiling(n),表示不小于n的最大整數
select ceiling();

5,求四舍五入值round(n,d),n表示原數,d表示小數位置,預設為0
select round();

6,求x的y次幂pow(x,y)
select pow(,);

7,擷取圓周率PI()
select PI();

8,随機數rand(),值為0-1.0的浮點數
select rand();
還有其它很多三角函數,使用時可以查詢文檔
           

Num03–>日期函數

,擷取子值,值為整數類型,函數如下
year(date)傳回date的年份(範圍在到)
month(date)傳回date中的月份數值
day(date)傳回date中的日期數值
hour(time)傳回time的小時數(範圍是到)
minute(time)傳回time的分鐘數(範圍是到)
second(time)傳回time的秒數(範圍是到)
select year('2016-12-21');

,日期計算,使用+-運算符,數字後面的關鍵字為year、month、day、hour、minute、second
select '2016-12-21'+interval 1 day;
日期格式化date_format(date,format)
參數format可選值如下
%Y 擷取年,傳回完整年份
%y 擷取年,傳回簡寫年份
%m 擷取月,傳回月份
%d 擷取日,傳回天值
%H 擷取時,傳回進制的小時數
%h 擷取時,傳回進制的小時數
%i 擷取分,傳回分鐘數
%s 擷取秒,傳回秒數
示例如下:将使用-拼接的日期轉換為使用空格拼接
select date_format('2016-12-21','%Y %m %d');
目前日期current_date()
select current_date();
目前時間current_time()
select current_time();
目前日期時間now()
select now();
           

Num04–>類型轉換函數

有cast和convert兩個函數

文法如下:

cast(value as type)
convert(value, type)
value表示要轉換的值
type表示目标類型

目标類型如下:

二進制binary
字元型char,可指定字元個數如char()
日期date
時間time
日期時間型datetime
浮點數decimal
整數signed
無符号整數unsigned

例如:
SELECT CONVERT('125.83',SIGNED);
SELECT CAST('125.83' AS signed);
           

Num05–>流程控制函數

,類似于python中的if語句,進行選擇判斷
case文法:等值判斷
說明:當值等于某個比較值的時候,對應的結果會被傳回;如果所有的比較值都不相等則傳回else的結果;如果沒有else并且所有比較值都不相等則傳回null
case 值 when 比較值 then 結果 when 比較值 then 結果 ... else 結果 end
例:
select case  when  then 'one' when  then 'two' else 'zero' end as result;
case文法:非等值判斷,可以進行>、<、!=等判斷
說明:當某個條件傳回true時,對應的結果被傳回;如果所有的條件都不傳回true則傳回else的結果;如果沒有else并且所有條件都不傳回true則傳回null
case when 條件 then 結果 when 條件 then 結果 ... else 結果 end
例:
select case when > then 'part1' when > then 'part2' else 'part3' end as result;

,if語句
說明:如果表達式的結果為true,則傳回結果,否則傳回結果
if(表達式,結果,結果)
例:
select if(>,,) as result;
ifnull語句
說明:如果表達式不為null,則傳回表達式的結果,否則傳回表達式的結果
ifnull(表達式,表達式)
例:
select ifnull(,) as result;
nullif語句
說明:如果表達式等于表達式,則傳回null,否則傳回表達式的結果
nullif(表達式,表達式)
例:
select nullif(,) as result;