1. 程式人生 > >MySql儲存過程中的基本函式和需要用到的運算子

MySql儲存過程中的基本函式和需要用到的運算子

mysql儲存過程學習總結-操作符

算術運算子

+ 加 SET var1=2+2; 4

- 減 SET var2=3-2; 1

* 乘 SET var3=3*2; 6

/ 除 SET var4=10/3; 3.3333

DIV 整除 SET var5=10 DIV 3; 3

% 取模 SET var6=10%3 ; 1

比較運算子

> 大於 1>2 False

< 小於 2<1 False

<= 小於等於 2<=2 True

>= 大於等於 3>=2 True

BETWEEN 在兩值之間 5 BETWEEN 1 AND 10 True

NOT BETWEEN 不在兩值之間 5 NOT BETWEEN 1 AND 10 False

IN 在集合中 5 IN (1,2,3,4) False

NOT IN 不在集合中 5 NOT IN (1,2,3,4) True

= 等於 2=3 False

<>, != 不等於 2<>3 False

<=> 嚴格比較兩個NULL值是否相等 NULL<=>NULL True

LIKE 簡單模式匹配 "Guy Harrison" LIKE "Guy%" True

REGEXP 正則式匹配 "Guy Harrison" REGEXP "[Gg]reg" False

IS NULL 為空 0 IS NULL False

IS NOT NULL 不為空 0 IS NOT NULL True

邏輯運算子與

(AND)

AND

TRUE

FALSE

NULL

TRUE

TRUE

FALSE

NULL

FALSE

FALSE

FALSE

NULL

NULL

NULL

NULL

NULL

或(OR)

OR

TRUE

FALSE

NULL

TRUE

TRUE

TRUE

TRUE

FALSE

TRUE

FALSE

NULL

NULL

TRUE

NULL

NULL

異或(XOR)

XOR

TRUE

FALSE

NULL

TRUE

FALSE

TRUE

NULL

FALSE

TRUE

FALSE

NULL

NULL

NULL

NULL

NULL

位運算子

| 位或

& 位與

<< 左移位

>> 右移位

~ 位非(單目運算,按位取反)

mysq儲存過程中常用的函式,字串型別操作,數學類,日期時間類。

mysql儲存過程基本函式

一.字串類

CHARSET(str) //返回字串字符集

CONCAT (string2 [,... ]) //連線字串

INSTR (string ,substring ) //返回substring首次在string中出現的位置,不存在返回0

LCASE (string2 ) //轉換成小寫

LEFT (string2 ,length ) //從string2中的左邊起取length個字元

LENGTH (string ) //string長度

LOAD_FILE (file_name ) //從檔案讀取內容

LOCATE (substring , string [,start_position ] ) 同INSTR,但可指定開始位置

LPAD (string2 ,length ,pad ) //重複用pad加在string開頭,直到字串長度為length

LTRIM (string2 ) //去除前端空格

REPEAT (string2 ,count ) //重複count次

REPLACE (str ,search_str ,replace_str ) //在str中用replace_str替換search_str

RPAD (string2 ,length ,pad) //在str後用pad補充,直到長度為length

RTRIM (string2 ) //去除後端空格

STRCMP (string1 ,string2 ) //逐字元比較兩字串大小,

SUBSTRING (str , position [,length ]) //從str的position開始,取length個字元,

注:mysql中處理字串時,預設第一個字元下標為1,即引數position必須大於等於1 mysql> select substring(’abcd’,0,2);

+———————–+

| substring(’abcd’,0,2) |

+———————–+

| |

+———————–+

1 row in set (0.00 sec) mysql> select substring(’abcd’,1,2);

+———————–+

| substring(’abcd’,1,2) |

+———————–+

| ab |

+———————–+

1 row in set (0.02 sec)

TRIM([[BOTH|LEADING|TRAILING] [padding] FROM]string2) //去除指定位置的指定字元

UCASE (string2 ) //轉換成大寫

RIGHT(string2,length) //取string2最後length個字元

SPACE(count) //生成count個空格

二.數學類

ABS (number2 ) //絕對值

BIN (decimal_number ) //十進位制轉二進位制

CEILING (number2 ) //向上取整

CONV(number2,from_base,to_base) //進位制轉換

FLOOR (number2 ) //向下取整

FORMAT (number,decimal_places ) //保留小數位數

HEX (DecimalNumber ) //轉十六進位制

注:HEX()中可傳入字串,則返回其ASC-11碼,如HEX(’DEF’)返回4142143

也可以傳入十進位制整數,返回其十六進位制編碼,如HEX(25)返回19

LEAST (number , number2 [,..]) //求最小值

MOD (numerator ,denominator ) //求餘

POWER (number ,power ) //求指數

RAND([seed]) //隨機數

ROUND (number [,decimals ]) //四捨五入,decimals為小數位數] 注:返回型別並非均為整數,如:

(1)預設變為整形值

mysql> select round(1.23);

+————-+

| round(1.23) |

+————-+

| 1 |

+————-+

1 row in set (0.00 sec)

mysql> select round(1.56);

+————-+

| round(1.56) |

+————-+

| 2 |

+————-+

1 row in set (0.00 sec)

(2)可以設定小數位數,返回浮點型資料

mysql> select round(1.567,2);

+—————-+

| round(1.567,2) |

+—————-+

| 1.57 |

+—————-+

1 row in set (0.00 sec)

SIGN (number2 ) //返回符號,正負或0

SQRT(number2) //開平方

三.日期時間類

ADDTIME (date2 ,time_interval ) //將time_interval加到date2

CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //轉換時區

CURRENT_DATE ( ) //當前日期

CURRENT_TIME ( ) //當前時間

CURRENT_TIMESTAMP ( ) //當前時間戳

DATE (datetime ) //返回datetime的日期部分

DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或時間

DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式顯示datetime

DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上減去一個時間

DATEDIFF (date1 ,date2 ) //兩個日期差

DAY (date ) //返回日期的天

DAYNAME (date ) //英文星期

DAYOFWEEK (date ) //星期(1-7) ,1為星期天

DAYOFYEAR (date ) //一年中的第幾天

EXTRACT (interval_name FROM date ) //從date中提取日期的指定部分

MAKEDATE (year ,day ) //給出年及年中的第幾天,生成日期串

MAKETIME (hour ,minute ,second ) //生成時間串

MONTHNAME (date ) //英文月份名

NOW ( ) //當前時間

SEC_TO_TIME (seconds ) //秒數轉成時間

STR_TO_DATE (string ,format ) //字串轉成時間,以format格式顯示

TIMEDIFF (datetime1 ,datetime2 ) //兩個時間差

TIME_TO_SEC (time ) //時間轉秒數]

WEEK (date_time [,start_of_week ]) //第幾周

YEAR (datetime ) //年份

DAYOFMONTH(datetime) //月的第幾天

HOUR(datetime) //小時

LAST_DAY(date) //date的月的最後日期

MICROSECOND(datetime) //微秒

MONTH(datetime) //月

MINUTE(datetime) //分

附:可用在INTERVAL中的型別

DAY ,DAY_HOUR ,DAY_MINUTE ,DAY_SECOND ,HOUR ,HOUR_MINUTE ,HOUR_SECOND ,MINUTE ,MINUTE_SECOND,MONTH ,SECOND ,YEAR