在前面若干章節中,我們介紹了SQL的基礎與高階語法,接下來,我們將分四個章節,介紹MySQL中常見的函數應用,大致分為如下幾個章節:
- MySQL 字符串函數
- MySQL 數字函數
- MySQL 日期函數
- MySQL 高級函數
本文將主要介紹MySQL 字符串函數。
演示數據
我們通過創建 Student_Information表,并向該表中插入以下數據。
建表SQL語句如下:
插入SQL語句如下:
表數據如下:
ASCII(s) 函數
返回字符串 s 的第一個字符的 ASCII 碼,示例如下:
如上,返回 sname 字段第一個字母的 ASCII 碼。
CHAR_LENGTH(s) 函數
返回字符串 s 的字符數量,示例如下:
如上,返回 sname 字段的字符數量。
CONCAT(s1, s2, ...sn) 函數
將字符串 s1,s2...,sn 連接為一個字符串,示例如下:
如上,我們將 sname, phone 字段合并為一個字符串。
CONCAT_WS(sep, s1,s2...sn) 函數
將 s1,s2...,sn 連接成字符串,并以sep字符作為分隔符,示例如下:
如上,我們將 sname, phone 字段合并為一個字符串。并使用 '-' 作為分隔符。
FIELD(s,s1,s2...) 函數
返回第一個字符串 s 在字符串列表 (s1,s2...) 中的位置,示例如下:
如上,我們返回字符串 Deja 在列表值 'Devin', 'Anna','Deja' 中的位置為 3 。
FIND_IN_SET(s1,s2) 函數
解析逗號分隔的 s2 列表,返回在字符串 s2 中與 s1 匹配的字符串的位置,示例如下:
如上,返回字符串 Devin 在指定字符串 Devin,19825011315 中的位置為 1 。
LOCATE(s1, s)函數
返回 s1 在字符串 s 的第一個出現的位置,示例如下:
如上,獲取 tiao 在字符串 toutiao 中的第一次出現的位置為 4。
FORMAT(n,d)函數
將數字 n 進行格式化, 如 "#,###,###.##"。 將 n 四舍五入并保留到小數點后 d 位,示例如下:
如上,我們將 17758521.1314 格式化為 17,758,521.13 。
INSERT(s1, x, len, s2) 函數
字符串 s2 替換 s1 的第 x 位置開始,長度為 len 的字符串,示例如下:
如上,我們從字符串 toutiao.com 第1個位置開始的 7 個字符替換為 testops。
LEFT(s, n) 函數
返回字符串 s 的前 n 個字符,示例如下:
如上,返回 phone 字段的前 3 個字符。
RIGHT(s, n) 函數
返回字符串 s 的后 n 個字符,示例如下:
如上,返回 phone 字段的后 4 個字符。
MID(s, n, len) 函數
從字符串 s 的第 n 位置截取長度為 len 的子字符串,示例如下:
如上,從 phone 字段的第 7 個位置開始截取長度為 4 個字符的字符串。
LOWER(s) 函數
將字符串 s 的所有字母變成小寫字母,示例如下:
如上,字符串 sname 字段轉換為純小寫。
UPPER(s) 函數
將字符串 s 轉換為大寫,示例如下:
如上,將 sname 字段轉換為大寫。
LPAD(s1, len, s2) 函數
在字符串 s1 的最左邊開始填充字符串 s2,并使字符串長度達到 len,示例如下:
如上,將字符串 '-' 填充到 sname 字段的最左邊,并使字段長度滿足 6 個字符:
RPAD(s1, len, s2) 函數
在字符串 s1 的結尾處添加字符串 s2,使字符串的長度達到 len,示例如下:
如上,將字符串 '-' 填充到 sname 字段的最右邊,并使字段長度滿足 6 個字符:
LTRIM(s) 函數
去掉字符串 s 左邊的空格,示例如下:
如上,去掉字符串 ' toutiao.com' 左邊的空格。
RTRIM(s) 函數
去掉字符串 s 右邊的空格,示例如下:
如上,去掉字符串 'toutiao.com ' 的右邊的空格。
TRIM(s) 函數
去掉字符串 s 左右兩邊的空格,示例如下:
如上,去掉字符串 ' toutiao.com ' 的左右的空格:
REPEAT(s, n) 函數
將字符串 s 重復 n 次,示例如下:
如上,將字符串 'testops' 重復 2 次。
REPLACE(s, s1, s2) 函數
使用字符串 s2 替代字符串 s 中的字符串 s1,示例如下:
如上,將字符串 toutiao.com 中的字符 toutiao 替換為字符 testops。
REVERSE(s) 函數
將字符串 s 的順序反過來,示例如下:
如上,將字符串 toutiao.com 的順序反過來。
STRCMP(s1, s2) 函數
比較字符串 s1 和 s2,若 s1 與 s2 相等返回 0 ,若 s1 > s2 返回 1,若 s1<s2 返回 -1,示例如下:
如上 ,比如 "testops" 與 "testops",因相等則返回 0。