有志者,事竟成
文章持續更新,可以微信搜尋【小奇JAVA面試】第一時間閱讀,回複【資料】擷取福利,回複【項目】擷取項目源碼,回複【履歷模闆】擷取履歷模闆,回複【學習路線圖】擷取學習路線圖。
文章目錄
- 前言
- 一、MySQL函數簡介
- 二、數學函數
- 1、絕對值函數ABS(x)和傳回圓周率的函數PI()
- 2、平方根函數SQRT(x)和求餘函數MOD(x,y)
- 3、擷取整數的函數CEIL(x)、CEILING(x)和FLOOR(x)
- 4、擷取随機數的函數RAND()和RAND(x)
- 5、四舍五入函數ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)
- 6、符号函數SIGN(x)
- 7、幂運算函數pow(x,y)、power(x,y)和exp(x)
- 8、對數運算函數LOG(x)和LOG10(x)
- 9、角度與弧度互相轉換的函數RADIANS(x)和DEGREES(x)
- 10、正弦函數SIN(x)和反正弦函數ASIN(x)
- 11、餘弦函數COS(x)和反餘弦函數ACOS(x)
- 12、正切函數、反正切函數和餘切函數
- 三、字元串函數
- 1、計算字元串字元數的函數和字元串長度的函數
- 2、合并字元串的函數concat(s1,s2,...)和concat_ws(x,s1,s2,...)
- 3、替換字元串的函數insert(s1,x,len,s2)
- 4、字母大小寫轉換函數
- 5、擷取指定長度的字元串函數left(s,n)和right(s,n)
- 6、填充字元串的函數lpad(s1,len,s2)和rpad(s1,len,s2)
- 7、删除空格的函數ltrim(s)、rtrim(s)和trim(s)
- 8、删除指定字元串的函數trim(s1 from s)
- 9、重複生成字元串的函數repeat(s,n)
- 10、空格函數space(n)和替換函數replace(s,s1,s2)
- 11、比較字元串大小的函數strcmp(s1,s2)
- 12、擷取子串的函數substring(s,n,len)和MID(s,n,len)
- 13、比對子串開始位置的函數
- 14、字元串逆序的函數reverse(s)
- 15、傳回指定位置的字元串的函數
- 16、傳回指定字元串位置的函數field(s,s1,s2,...)
- 17、傳回子串位置的函數find_in_set(s1,s2)
- 18、選取字元串的函數MAKE_SET(s,s1,s2,...)
- 四、日期和時間函數
- 1、擷取目前日期的函數和擷取目前時間的函數
- 2、擷取目前日期和時間的函數
- 3、unix時間戳函數
- 4、傳回utc日期的函數和傳回utc時間的函數
- 5、擷取月份的函數month(d)和monthname(d)
- 6、擷取星期的函數dayname(d)、dayofweek(d)和weekday(d)
- 7、擷取星期的函數week(d)和weekofyear(d)
- 8、擷取天數的函數dayofyear(d)和dayofmonth(d)
- 9、擷取年份、季度、小時、分鐘和秒鐘的函數
- 10、擷取日期的指定值的函數extract(type from d)
- 11、時間和秒鐘轉換的函數
- 12、計算日期和時間的函數
- 13、将日期和時間格式化的函數
- 五、條件判斷函數
- 1、if(expr,v1,v2)函數
- 2、ifnull(v1,v2)函數
- 3、case函數
- 六、系統資訊函數
- 1、擷取MySQL版本号、連接配接數和資料庫名的函數
- 2、擷取使用者名的函數
- 3、擷取字元串的字元集合排序方式的函數
- 4、擷取最後一個自動生成的id值的函數
- 七、加密函數
- 1、加密函數password(str)
- 2、加密函數MD5(str)
- 3、加密函數encode(str,pswd_str)
- 4、解密函數decode(crypt_str,pswd_str)
- 八、其他函數
- 1、格式化函數format(x,n)
- 2、不同進制的數字進行轉換的函數
- 3、IP位址與數字互相轉換的函數
- 4、加鎖函數和解鎖函數
- 5、重複執行指定操作的函數
- 6、改變字元集的函數
- 7、改變字段資料類型的函數
- 九、總結
前言
MySQL資料庫中提供了很豐富的函數。MySQL函數包括數學函數、字元串函數、日期和時間函數、條件判斷函數、系統資訊函數、加密函數、格式化函數等。通過這些函數,可以簡化使用者的操作。例如,字元串連接配接函數可以很友善地将多個字元串連接配接在一起。
一、MySQL函數簡介
MySQL函數包括數學函數、字元串函數、日期和時間函數、條件判斷函數、系統資訊函數、加密函數等。select語句及其條件表達式都可以使用這些函數。同時,insert、update和delect語句及其條件表達式也可以使用這些函數。例如,表中的某個資料是負數,現在需要将這個資料顯示為整數。這就可以使用絕對值函數。從上面可以知道,MySQL函數可以對表中資料進行相應的處理,以便得到使用者希望得到的資料。這些函數可以使MySQL資料庫的功能更加強大。下面介紹這幾類函數的使用範圍。
數學函數:這類函數主要用于處理數字。這類函數包括絕對值函數、正弦函數、餘弦函數和擷取随機數的函數等。
字元串函數:這類函數主要用于處理字元串。其中包括字元串連接配接函數、字元串比較函數、将字元串的字母都變成小寫或大寫字母的函數和擷取子串的函數等。
日期和時間函數:這類函數主要用于處理日期和時間。其中包括擷取目前時間的函數、擷取目前日期的函數、傳回年份的函數和傳回日期的函數等。
條件判斷函數:這類函數主要用于在MySQL語句中控制條件選擇。其中包括IF語句、CASE語句和WHEN語句等。
系統資訊函數:這類函數主要用于擷取MySQL資料庫的系統資訊。其中包括擷取資料庫名的函數、擷取目前使用者的函數和擷取資料庫版本的函數等。
加密函數:這類函數主要用于對字元串進行加密解密。其中包括字元串加密函數和字元串解密函數等。
其他函數:包括格式化函數和鎖函數等。
二、數學函數
數學函數是MySQL中常用的一類函數。主要用于處理數字,包括整型、浮點數等。數學函數包括絕對值函數、正弦函數、餘弦函數和擷取随機數的函數等。
1、絕對值函數ABS(x)和傳回圓周率的函數PI()
ABS(x)用來求絕對值:PI()用來傳回圓周率。
下面将示範ABS(x)、PI()這兩個函數的使用。
2、平方根函數SQRT(x)和求餘函數MOD(x,y)
SQRT(x)用來求平方根;MOD(x,y)用來求餘數。
下面将示範SQRT(x)、MOD(x,y)兩個函數的使用。
3、擷取整數的函數CEIL(x)、CEILING(x)和FLOOR(x)
CEIL(x)和CEILING(x)這兩個函數傳回大于或等于x的最小整數;FLOOR(x)函數傳回小于或等于x的最大整數。
下面将示範CEIL(x)、CEILING(x)和FLOOR(x)3個函數的使用。
4、擷取随機數的函數RAND()和RAND(x)
RAND()和RAND(x)這兩個函數都是傳回0-1的随機數。但是RAND()傳回的數是完全随機的,而RAND(x)函數的x相同時傳回的值是相同的。
下面将示範RAND()和RAND(x)兩個函數的使用。
5、四舍五入函數ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)
ROUND(x)函數傳回離x最近的整數,也就是對x進行四舍五入處理;ROUND(x,y)函數傳回x保留到小數點後y位的值,截斷時需要進行四舍五入處理;TRUNCATE(x,y)函數傳回x保留到小數點後y為的值。
下面将示範ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)3個函數的使用。
6、符号函數SIGN(x)
sign(x)函數傳回x的符号,x是負數、0、正數分别傳回-1、0和1。
下面将示範sign(x)函數的使用。
7、幂運算函數pow(x,y)、power(x,y)和exp(x)
POW(x,y)和POWER(x,y)這兩個函數計算x的y次方,exp(x)函數計算e的x次方。
下面将示範POW(x,y)、power(x,y)和exp(x)3個函數的使用。
8、對數運算函數LOG(x)和LOG10(x)
LOG(x)函數計算x的自然對數;LOG10(x)函數計算以10為底的對數。其中,exp(x)和LOG(x)這兩個函數互為反函數。
下面将示範LOG(x)和LOG10(x)兩個函數的使用。
9、角度與弧度互相轉換的函數RADIANS(x)和DEGREES(x)
RADIANS(x)函數将角度轉換為弧度;DEGREES(x)函數将弧度轉換為角度。這兩個函數互為反函數。
下面示範RADIANS(x)函數和DEGREES(x)函數的使用。
10、正弦函數SIN(x)和反正弦函數ASIN(x)
SIN(x)函數用來求正弦值,其中x是弧度;ASIN(x)函數用來求反正弦值。ASIN(x)中x的取值必須在-1~1之間。否則傳回的結果将會是null。
下面将示範SIN(x)、ASIN(x)兩個函數的使用。
11、餘弦函數COS(x)和反餘弦函數ACOS(x)
COS(x)函數用來求餘弦值,其中x是弧度;ACOS(x)函數用來求反餘弦值。COS(x)和ACOS(x)互為反函數。并且,ACOS(x)中x的取值必須在-1~1之間。否則傳回的結果将會是null。
下面将示範COS(x)和ACOS(x)兩個函數的使用。
12、正切函數、反正切函數和餘切函數
TAN(x)函數用來求正切值,其中x是弧度;ATAN(x)和ATAN2(x)用來求反正切值;COT(x)函數用來求餘切值。TAN(x)與ATAN(x)、ATAN2(x)互為反函數。而且TAN(x)傳回值是COT(x)傳回值的倒數。
下面将示範TAN(x)、ATAN(x)、ATAN2(x)和COT(x)4個函數的使用。
三、字元串函數
字元串函數是MySQL中最常用的一類函數。字元串函數主要用于處理表中的字元串。字元串函數包括求字元串長度、合并字元串、在字元串中插入子串和大小字母之間切換等函數。
1、計算字元串字元數的函數和字元串長度的函數
CHAR_LENGTH(s)函數計算字元串s的字元數;LENGTH(s)函數計算字元串s的長度。
下面将示範CHAR_LENGTH(s)函數和LENGTH(s)函數的使用。
2、合并字元串的函數concat(s1,s2,…)和concat_ws(x,s1,s2,…)
concat(s1,s2,…)函數和concat_ws(x,s1,s2,…)函數都可以将s1、s2等多個字元串合并成一個字元串。但concat_ws(x,s1,s2,…)可以将各字元串直接用參數x隔開。
下面将示範concat(s1,s2,…)函數和concat_ws(x,s1,s2,…)函數的使用。
3、替換字元串的函數insert(s1,x,len,s2)
insert(s1,x1,len,s2)函數将字元串s1中的x位置開始長度為len的字元串用s2替換。
下面将示範insert(s1,x,len,s2)函數的使用。
4、字母大小寫轉換函數
upper(s)函數和ucase(s)函數将字元串s的所有字母變成大寫字母;lower(s)函數和lcase(s)函數将字元串s的所有字母變成小寫字母。
下面将示範upper(s)、ucase(s)、lower(s)和lcase(s)4個函數的使用。
5、擷取指定長度的字元串函數left(s,n)和right(s,n)
left(s,n)函數傳回字元串s的前n個字元;right(s,n)函數傳回字元串s的後n個字元。
下面将示範left(s,n)函數和right(s,n)函數的使用。
6、填充字元串的函數lpad(s1,len,s2)和rpad(s1,len,s2)
LPAD(s1,len,s2)函數将字元串s2填充到s1的開始處,使字元串長度達到len;rpad(s1,len,s2)函數将字元串s2填充到s1的結尾處,使字元串長度達到len。
下面将示範lpad(s1,len,s2)函數和rpad(s1,len,s2)函數的使用。
7、删除空格的函數ltrim(s)、rtrim(s)和trim(s)
ltrim(s)函數将去掉字元串s開始處的空格;rtrim(s)函數将去掉字元串s結尾處的空格;trim(s)函數将去掉字元串s開始處和結尾處的空格。
下面将示範ltrim(s)、RTRIM(s)和TRIM(s)3個函數的使用。使用的字元串是‘me’。該字元串的開頭和結尾各有一個空格。因為空格不好顯示,是以使用concat()函數來将字元串與‘+’連接配接起來。
8、删除指定字元串的函數trim(s1 from s)
trim(s1 from s)函數将去掉字元串s中開始處和結尾處的字元串s1。
下面将示範trim(s1 from s)函數的使用。
9、重複生成字元串的函數repeat(s,n)
repeat(s,n)函數将字元串s重複n次。
下面将示範repeat(s,n)函數的使用。
10、空格函數space(n)和替換函數replace(s,s1,s2)
space(n)函數傳回n個空格;replace(s,s1,s2)函數将字元串s2替代字元串s中的字元串s1。
下面将示範space(n)和replace(s,s1,s2)兩個函數的使用。
11、比較字元串大小的函數strcmp(s1,s2)
strcmp(s1,s2)函數用來比較字元串s1和s2。如果s1大于s2,結果傳回1;如果s1等于s2,結果傳回0;如果s1小于s2,結果傳回-1。
下面将示範strcmp(s1,s2)函數的使用。
12、擷取子串的函數substring(s,n,len)和MID(s,n,len)
substring(s,n,len)函數和MID(s,n,len)函數從字元串s的第n個位置開始擷取長度為len的字元串。
下面将示範substring(s,n,len)函數和MID(s,n,len)函數的使用。
13、比對子串開始位置的函數
locate(s1,s)、position(s1 in s)和instr(s,s1)3個函數從字元串s中擷取s1的開始位置。
下面将示範locate(s1,s)、position(s1 in s)和instr(s,s1)3個函數的使用。
14、字元串逆序的函數reverse(s)
reverse(s)函數将字元串s的順序反過來。
下面将示範reverse(s)函數的使用。
15、傳回指定位置的字元串的函數
elt(n,s1,s2,…)函數的傳回第n個字元串。
下面将示範elt(n,s1,s2,…)函數的使用。
16、傳回指定字元串位置的函數field(s,s1,s2,…)
field(s,s1,s2,…)函數傳回第一個與字元串s比對的字元串的位置。
下面将示範field(s,s1,s2,…)函數的使用。
17、傳回子串位置的函數find_in_set(s1,s2)
find_in_set(s1,s2)函數傳回在字元串s2中與s1比對的字元串的位置。其中,字元串s2中包含了若幹個用逗号隔開的字元串。
下面将示範find_in_set(s1,s2)函數的使用。
18、選取字元串的函數MAKE_SET(s,s1,s2,…)
make_set(x,s1,s2,…)函數按x的二進制數從s1,s2,…,sn中選取字元串。例如12的二進制是1100。這個二進制數從右到左的第3位和第4位是1,是以選取s3和s4。
下面将示範make_set(x,s1,s2,…)函數的使用。
四、日期和時間函數
日期和時間函數是MySQL中另一類最常用的函數。日期和時間函數主要用于處理表中的日期和時間資料。日期和時間函數包括擷取目前日期的函數、擷取目前時間的函數、計算日期的函數、計算時間的函數等。
1、擷取目前日期的函數和擷取目前時間的函數
curdate()和current_date()函數擷取目前日期;curtime()和current_time()函數擷取目前時間。
下面将示範curdate()、current_date()、curtime()和curr-ent_time()4個函數的使用。
2、擷取目前日期和時間的函數
now()、current_timestamp()、localtime()和sysdate()等4個函數都用來擷取目前的日期和時間。這四個函數表示相同的含義。
下面将示範now()、current_timestamp()、localtime()和sysdate()4個函數的使用。
3、unix時間戳函數
unix_timestamp()函數以unix時間戳的形式傳回目前時間;unix_timestamp(d)函數将時間d以unix時間戳的形式傳回;from_unixtime(d)函數把unix時間戳的時間轉換為普通格式的時間。unix_timestamp(d)函數和from_unixtime(d)互為反函數。
下面将示範unix_timestamp()、unix_timestamp(d)和from_unixtime(d)3個函數的使用。
4、傳回utc日期的函數和傳回utc時間的函數
utc_date()函數傳回utc日期;utc_time()函數傳回utc時間。其中,utc是Universal Coordinated Time的縮寫,也就是國際協調時間。
下面将示範utc_date()函數和utc_time()函數的使用。
5、擷取月份的函數month(d)和monthname(d)
month(d)函數傳回日期d中的月份值,其取值範圍為1~12;monthname(d)函數傳回日期d中的月份的英文名稱,如January,February等。其中,參數d可以是日期和時間,也可以是日期。
下面将示範month(d)函數和monthname(d)函數的使用。
6、擷取星期的函數dayname(d)、dayofweek(d)和weekday(d)
dayname(d)函數傳回日期d是星期幾,顯示其英文名,如Monday,Tuesday等;dayofweek(d)函數也傳回日期d是星期幾,1表示星期日,2表示星期一,依次類推;weekday(d)函數也傳回日期d是星期幾,0表示星期一,1表示星期二,依次類推。其中,參數d可以是日期和時間,也可以是日期。
下面将示範dayname(d)、dayofweek(d)和weekday(d)函數的使用。
7、擷取星期的函數week(d)和weekofyear(d)
week(d)函數和weekofyear(d)函數都是計算日期d是本年的第幾個星期。傳回值的範圍是1~53。
下面将示範week(d)函數和weekofyear(d)函數的使用。
8、擷取天數的函數dayofyear(d)和dayofmonth(d)
dayofyear(d)函數日期d是本年的第幾天;dayofmonth(d)函數傳回計算日期d是本月的第幾天。
下面将示範dayofyear(d)函數和dayofmonth(d)函數的使用。
9、擷取年份、季度、小時、分鐘和秒鐘的函數
year(d)函數傳回日期d中的年份值;quarter(d)函數傳回日期d是本年第幾季度,值的範圍是1~4;hour(t)函數傳回時間t中的小時值;minute(t)函數傳回時間t中的分鐘值;second(t)函數傳回時間t中的秒鐘值。
下面将示範year(d)、quarter(d)、hour(t)、minute(t)和second(t)5個函數的使用。
10、擷取日期的指定值的函數extract(type from d)
extract(type from d)函數從日期d中擷取指定的值。這個值是什麼由type的值決定。type的取值可以是year、month、day、hour、minute和second。如果type的值是year,結果傳回年份值;month傳回月份值;day傳回是幾号;hour傳回小時值;minute傳回分鐘值;second傳回秒鐘值。
下面将示範extract(type from d)函數的使用。
11、時間和秒鐘轉換的函數
time_to_sec(t)函數将時間t轉換為以秒為機關的時間;sec_to_time(s)函數将以秒為機關的時間s轉換為時分秒的格式。time_to_sec(t)和sec_to_time(s)互為反函數。
下面将示範time_to_sec(t)函數和sec_to_time(s)函數的使用。
12、計算日期和時間的函數
1、to_days(d)、from_days(n)和datediff(d1,d2)函數
to_days(d)函數計算日期d與0000年1月1日的天數;from_days(n)函數計算從0000年1月1日開始n天後的日期;datediff(d1,d2)函數計算日期d1與d2之間相隔的天數。
下面将示範to_days(d)、from_days(n)和datediff(d1,d2)3個函數的使用。
2、adddate(d,n)、subdate(d,n)、addtime(t,n)和subtime(t,n)函數
adddate(d,n)函數傳回起始日期d加上n天的日期;subdate(d,n)函數傳回起始日期d減去n天的日期;addtime(t,n)函數傳回起始日期t加上n秒後的時間;subtime(t,n)函數傳回起始時間t減去n秒後的時間。
下面将示範adddate(d,n)、subdate(d,n)、addtime(t,n)和subtime(t,n)4個函數的使用。
3、adddate(d,interval expr type)和date_add(d,interval expr type)函數
adddate(d,interval expr type)函數和date_add(d,interval expr type)函數傳回起始日期d加上一個時間段後的日期;subdate(d,interval expr type)函數傳回起始日期d減去一個時間段後的日期。上面3個函數的expr是表示時間段長度的表達式。該表達式與後面的間隔類型type對應。
下面使用adddate(d,interval expr type)函數計算一年零一個月後的日期和時間。
13、将日期和時間格式化的函數
1、date_format(d,f)函數
date_formate(d,f)函數按照表達式f的要求顯示日期d。表達式f指定了顯示的格式。
下面用與“Jan lst 1986”一樣的形式來顯示字段中的日期。
2、time_formate(t,f)函數
time_formate(t,f)函數按照表達式f的要求顯示時間t。表達式f指定了顯示的格式。
下面将時間字段用12小時制來顯示。
3、get_format(type,s)函數
get_formate(type,s)函數根據字元串s擷取type類型資料的顯示格式。其中,參數d的取值包括date、datetime和time;s參數的取值包括eur、usa、jis、iso和internal。
使用get_format(type,s)函數隻會傳回一個格式字元串。
下面select語句中隻使用get_format(type,s)函數。
五、條件判斷函數
條件判斷函數用來在sql語句中進行條件判斷。根據是否滿足判斷條件,sql語句執行不同的分支。例如,從員工表中查詢員工的業績。如果業績高于指定值n,則輸出good;否則,輸出bad。下面是各種條件判斷函數的表達式、作用和使用方法。
1、if(expr,v1,v2)函數
if(expr,v1,v2)函數中,如果表達式expr成立,傳回結果v1;否則,傳回結果v2。
下面從t6中查詢學号(id),分數(grade)。并且,分數大于等于60,顯示pass;否則,顯示fail。select語句如下:
2、ifnull(v1,v2)函數
ifnull(v1,v2)函數中,如果v1的不為空,就顯示v1的值;否則就顯示v2的值。
下面從t6中查詢學号(id),分數(grade)。如果分數不為null,顯示分數,否則,顯示no grade。select語句如下:
3、case函數
1、case when expr1 then v1 [when expr2 then v2…][else vn] end
case when expr1 then v1 [when expr2 then v2…] [else vn]end函數中,case表示函數開始,end表示函數結束。如果表達式expr1成立時,傳回v1的值。如果表達式expr2成立時,傳回v2的值。依次類推,最後遇到else時,傳回vn的值。
下面從t6中查詢學号(id),分數(grade)。如果分數大于60,傳回‘GOOD’;如果分數為60,傳回‘PASS’;其餘分數傳回“FAIL”。select語句如下:
2、case exprwhen e1 then v1 [when e2 then v2…][else vn] end
case expr when e1 then v1 [when e2 then v2…][else vn] end 函數中,如果表達式expr取值等于e1時,傳回v1的值。如果表達式expr取值等于e2時,傳回v2的值。依次類推,最後遇到else時,傳回vn的值。case表示函數開始,end表示函數結束。
下面從t6中查詢學号(id),分數(grade)。如果分數等于60,傳回GOOD;如果分數為60,傳回pass;如果分數為50,傳回FAIL;其餘分數傳回NO GRADE。
select語句如下:
六、系統資訊函數
系統資訊函數用來查詢MySQL資料庫的系統資訊。例如,查詢資料庫的版本,查詢資料庫的目前使用者等。
1、擷取MySQL版本号、連接配接數和資料庫名的函數
version()函數傳回資料庫的版本号;connection_id()函數傳回伺服器的連接配接數,也就是到現在為止MySQL服務的連接配接次數;database()和schema()傳回目前資料庫名。
下面示範一下用法:
2、擷取使用者名的函數
USER()、system_user()、session_user()、current_user()和current_user這幾個函數可以傳回目前使用者的名稱。
下面查詢目前使用者的使用者名。
3、擷取字元串的字元集合排序方式的函數
charset(str)函數傳回字元串str的字元集,一般情況這個字元集就是系統的預設字元集;collation(str)函數傳回字元串str的字元排列方式。
下面檢視字元串‘aa’的字元集和字元串排序方式。
4、擷取最後一個自動生成的id值的函數
last_insert_id()函數傳回最後生成的auto_increment值。
下面測試last_insert_id()函數的作用。
七、加密函數
加密函數是MySQL中用來對資料進行加密的函數。因為資料庫中有些很敏感的資訊不希望被其他人看到,就應該通過加密的方式來使這些資料變成看似亂碼的資料。例如使用者的密碼,就應該經過加密。
1、加密函數password(str)
password(str)函數可以對字元串str進行加密。一般情況下,password(str)函數主要是用來給使用者的密碼加密的。
下面使用password(str)函數為字元串‘abcd’加密。
2、加密函數MD5(str)
MD5(str)函數可以對字元串str進行加密。MD5(str)函數主要對普通的資料進行加密。
下面使用md5(str)函數為字元串‘abcd’加密。
3、加密函數encode(str,pswd_str)
encode(str,pswd_str)函數可以使用字元串pswd_str來加密字元串str。加密的結果是一個二進制數,必須使用blob類型的字段來儲存它。
下面使用字元串‘aa’來加密字元串‘abcd’,将加密後的資料存入表b的code字段中。code字段是blob類型的。
4、解密函數decode(crypt_str,pswd_str)
decode(crypt_str,pswd_str)函數可以使用字元串pswd_str來為crypt_str解密。crypt_str是通過encode(str,pswd_str)加密後的二進制資料。字元串pswd_str應該與加密時的字元串pswd_str是相同的。
下面使用decode(crypt_str,psed_str)為encode(str,pswd_str)加密的資料解密。
八、其他函數
MySQL中除了上述函數以外,還包含了很多函數。例如format(x,n)函數用來格式化數字x,inet_aton()函數可以将ip轉換為數字。
1、格式化函數format(x,n)
format(x,n)函數可以将數字x進行格式化,将x保留到小數點後n位。這個過程需要進行四舍五入。例如format(2.356,2)傳回的結果将會是2.36;format(2.353,2)傳回的結果将會是2.35。
下面執行:
2、不同進制的數字進行轉換的函數
ascii(s)傳回字元串s的第一個字元的ascii碼;bin(x)傳回x的二進制編碼;HEX(x)傳回x的十六進制編碼;oct(x)傳回x的八進制編碼;conv(x,f1,f2)将x從f1進制數變成f2進制數。
3、IP位址與數字互相轉換的函數
inet_aton(IP)函數可以将IP位址轉換為數字表示;inet_ntoa(n)函數可以将數字n轉換成IP的形式。其中,inet_aton(ip)函數中IP值需要加上引号。這兩個函數互為反函數。
4、加鎖函數和解鎖函數
GET_LOCT(name,time)函數定義一個名稱為name、持續時間長度為time秒的鎖。如果鎖定成功,傳回1;如果嘗試逾時,傳回0;如果遇到錯誤,傳回null。release_lock(name)函數解除名稱為name的鎖。如果解鎖成功,傳回1;如果嘗試逾時,傳回0;如果解鎖失敗,傳回null;is_free_lock(name)函數判斷是否使用名為name的鎖。如果使用,傳回0;否則,傳回1。
下面增加一個名為MYSQL的鎖,持續時間是10秒。然後判斷這個鎖是否加上,最後解除鎖定。
5、重複執行指定操作的函數
benchmark(count,expr)函數将表達式expr重複執行count次,然後傳回執行時間。該函數可以用來判斷MySQL處理表達式的速度。
下面傳回系統的時間是100000次,計算使用的時間。
6、改變字元集的函數
convert(s using cs)函數将字元串s的字元集變成cs。
下面将字元串‘ABC’的字元集變成gbk。
7、改變字段資料類型的函數
cast(x as type)和convert(x,type)這兩個函數将x變成type類型。這兩個函數隻對binary、char、date、datetime、time、signed integer、unsignedinteger這些類型起作用。但兩種方法隻是改變了輸出值的資料類型,并沒有改變表中的字段的類型。
下面表中的d字段為datetime類型,将其變為date類型,或者time類型。
九、總結
這裡的相關内容還沒有整理完畢,文章後面持續更新,建議收藏。